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ù.