> On July 3, 2017 at 7:09 AM Rick Measham <r...@measham.id.au> wrote:
> 
> 
>     I'm not sure what you mean by 'local DIE handlers'. Are you talking about 
> defining a local $SIG{__DIE__} ?
> 
>     I've been out of perl for a couple of years, but surely you should just 
> use eval{} ?
> 
> 
>     $dt = eval { $parser->parse( $input ); };
> 
> 
>     if( $@ ){
> 
>        echo "Unable to parse your date ($input)\n";
> 
>        exit;
> 
>     }
> 
>      
> 
>     echo "Your date is $dt\n";
> 
> 
>     - Rick
> 

One of the edge cases with eval {} is the possibility that $@ gets clobbered 
before you get your hands on it. I have never actually had this happen to me 
(or at least I have never recognized it) but because I have a tendency to 
blunder into situations where odd things happen I have developed the habit of 
having the eval {} always return a true value, and then testing the value of 
the eval {}. An exception will cause it to be false, even in the unlikely 
(IM(NS)HO) case of $@ getting clobbered. In this specific case,


my $dt = eval { $parser->parse( $input ) }
or die "Unable to parse your date ($input)\n";


Off-topic changes to the above include the use of the "... or die" pattern, 
which causes the output to go to STDERR and causes the script to terminate with 
the equivalent of "exit 1". I don't think echo() is standard Perl -- maybe a 
braino for print()?

Reply via email to