At 12:51 PM 8/17/00 -0700, Damien Neil wrote:
>Hmm. It just occurred to me that you could combine your idea with
>exceptions quite nicely: All core functions throw exceptions on
>error, but only when called in a void context. (As well as, perhaps,
>when a given pragma is in effect.) This way, old code which correctly
>checks errors will run without modification. Old code which
>incorrectly ignores errors will get error checking. (And old code
>which correctly ignores errors breaks, which is probably enough of
>a problem to torpedo the whole idea. Alas.)
>
> open(FD, "foo") or die; # Scalar context, no exception thrown.
> open(FD, "foo"); # Void context, exception thrown on error.
This is the territory of RFC 70, which wants to expand the scope of
Fatal.pm, and RFC 80, which wants a rich object-oriented structure for the
exceptions.
But I was just asking something far more mundane, predicated on $!
surviving in much the same form: can its scope be expanded to be more than
just the current set of system calls?
--
Peter Scott
Pacific Systems Design Technologies