On Thu, 2 May 2002, Jim Cromie wrote: > > with p5, Ive often written > > eval {} or carp "$@ blah"; > > it seems to work, and it reads nicer (to my eye) than > > eval {}; if ($@) {} > > but I surmise that it works cuz the return-value from the block is non-zero, > for successful eval, and 0 or undef when block dies, not cuz of magical > treatment of $@.
The first one works because the return-value from the eval is undef if the block fails. The second one is because $@ is true if it failed, and false if it succeeded. > I gather that ';' is unneeded in p6, and given that $! is the > 'exception'al topicalizer, > is this construct no longer reliant on the last value in the eval block ? I would imagine that you would do it this way: try { ... CATCH { } } Only inside the CATCH does $! topicalize; I believe $_ becomes aliased to that. Remember, C<try> is Perl 6's eval{}. > put another way, does the 'topicalizer' reflect the exit condition of > the closure ? It represents the exception that was thrown, and whatsoever might be contained in that exception. Or am I wrong? Luke