Thank you. how to setup $! in module, and how can I get the $! in caller? regards.
On Fri, Nov 1, 2019 at 4:56 AM Dermot <paik...@gmail.com> wrote: > Hi, > > You cannot return `die`, die is a fatal exception that causes`test.pl` to > exit immediately. > One option would be to use warn to emit a warning to STDERR and return to > the caller and let them handle the failure. You may as well add the $! to > the output so the caller gets a copy of the last error. > ... > $p->close(); > warn "can't ping $host: $!"; > return 0; > } > > > > https://perldoc.perl.org/functions/die.html > https://perldoc.perl.org/functions/warn.html > https://perldoc.perl.org/perlvar.html#Error-Variables > > On Thu, 31 Oct 2019 at 09:42, Maggie Q Roth <rot...@gmail.com> wrote: > >> Hello >> >> Sorry I am new to perl, I was reading the charter about package. >> >> I tried to write the code below: >> >> use strict; >> use Net::Ping; >> >> package A; >> >> sub mytest { >> >> my $host = shift; >> my $p = Net::Ping->new(); >> unless ($p->ping($host)) { >> $p->close(); >> die "can't ping $host"; >> } >> } >> >> 1; >> >> package B; >> >> sub mytest { >> >> my $host = shift; >> my $p = Net::Ping->new(); >> unless ($p->ping($host)) { >> $p->close(); >> return 0; >> } >> } >> >> 1; >> >> package main; >> >> A::mytest('www.google.com'); >> >> print B::mytest('www.google.com'); >> >> >> >> When I run it, always get: >> $ perl test.pl >> can't ping www.google.com at test.pl line 12. >> >> >> Shouldn't I return die() in package's method? >> How do I let the caller know what happens when the method fails to run? >> >> Thanks in advance. >> >> Yours >> Maggie >> >