Re: RFC 129 (v1) Replace default filehandle/select with $DEFOUT, $DEFERR, $DEFIN
[email protected] (Jon Ericson) Thu, 17 Aug 2000 15:54:38 -0700
| Newsgroups | perl.perl6.language.io |
|---|---|
| Message-ID | <[email protected]> |
Perl6 RFC Librarian wrote: > With C<$DEFERR>, all error functions are set to act on it > instead of C<$STDERR> by default. So, the Perl 6 version > of the above is replaced by a single, simple line of code > at the top of your main program: > > $DEFERR = $ERRORLOG unless $have_a_tty; open STDERR, ">> error.log" unless $have_a_tty; > Presto, all error-related functions now redirect to your > error log automatically. All through simple assignment. > > Plus, if you have functions that you want to explicitly > print to C<$STDERR> you can still do so, another benefit: > > warn "Badness!"; # goes to $DEFERR > print $STDERR "Badness!" # explicitly to $STDERR > > This is not possible in Perl 5.[2] open ERR, ">& STDERR"; open STDERR, ">> error.log"; warn "Message goes to error.log"; print ERR "Message goes to stderr"; Not intuitive perhaps, but how often do you need to do this in a script? (Assume all error handling is automatic.) Jon -- Knowledge is that which remains when what is learned is forgotten. - Mr. King