On Wed, 2005-05-11 at 09:50, Luke Palmer wrote: > Oh, just to avoid further confusion: In the baz() called under fatal, > it will only turn undefs that were generated by "fail" calls into > exceptions. Other sorts of undefs will be returned as ordinary > undefs.
Ok, so let me try to get my head around this: fail is something like: return undef but Exception(...some state info...); the only question is whether the caller reacts to that special return value like so: if $return ~~ Exception { return $return; } or simply ignores it. If you ignore the special return value, then you presumably have the burden of coping with it in some other way, like so: no fatal; $socket.bind(:interface<localhost>, :port<80>) or $socket.bind([EMAIL PROTECTED]) or die "Cannot bind: $!"; At the top-level (runtime), you would expect to have something like (arm-waving some naming specifics): given $program.(@args) { when Exception { $*ERR.print $_.err; exit 1 } default { exit +$_ } } Am I getting it now? -- Aaron Sherman <[EMAIL PROTECTED]> Senior Systems Engineer and Toolsmith "It's the sound of a satellite saying, 'get me down!'" -Shriekback