ma la linea con cui fai i test a che provider corrisponde?

se non è tiscali allora succede che il server ti rifiuta la connessione e quindi non crei $smtp.

Prova:

$smtp = Net::SMTP->new(
Host => 'smtp.tiscali.it',
Hello => $ENV{'USER'},
Timeout => 30,
Debug => 1,
);

al posto di

$smtp = Net::SMTP->new('smtp.tiscali.it');

dovrebbe dirti qualcosa in più.