in reply to Re: My first thought was to build a macro... was I right?
in thread My first thought was to build a macro... was I right?

from Programming Perl:
$@
The currently raised exception or the Perl syntax error message from the last eval operation. (Mnemonic: where was the syntax error "at"?) Unlike $! ($OS_ERROR), which is set on failure but not cleared on success, $@ is guaranteed to be set (to a true value) if the last eval had a compilation error or run-time exception, and guaranteed to be cleared (to a false value) if no such problem occurred. (...)

HTH
  • Comment on Re: Re: My first thought was to build a macro... was I right?

Replies are listed 'Best First'.
Re: Re: Re: My first thought was to build a macro... was I right?
by BrowserUk (Patriarch) on Dec 04, 2002 at 15:04 UTC

    That's all very well, but if the file/dir string passed to unlink/rmtree simply doesn't exist or script does not have sufficient rights to perform the deletion, the will be neither a compilation error nor a run-time exception raised. I know cos I tried both situations. Therefore $@ will never be set, so neither failure will be detected.

    $! is set in both cases.

    I therefore can see no benefit in evaling these calls to functions. Better to use the standard idiom of unlink $file or die/warn/LOG $!; and rmtree $dir or die/warn/LOG $!; don't you think?


    Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
    Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
    Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
    Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

      Maybe a use Fatal somewhere? Otherwise $@ doesn't make a lot of sense...

      (I used to like Fatal, being an exception throwing sort of person. However it ended up causing me more problems than it solved - producing exactly this sort of confusion :-)