This and other RFCs are available on the web at
  http://dev.perl.org/rfc/

=head1 TITLE

STDIN, STDOUT, and STDERR should be renamed

=head1 VERSION

  Maintainer: Nathan Wiger <[EMAIL PROTECTED]>
  Date: 04 Aug 2000
  Last-Modified: 12 Aug 2000
  Version: 2
  Mailing List: [EMAIL PROTECTED]
  Number: 30
  Status: Frozen

=head1 ABSTRACT

Consensus has been reached that filehandles (currently
barewords) will be renamed to use the leading $ type, to
make them consistent with Perl.

STDIN, STDOUT, and STDERR should follow suit and be renamed
$STDIN, $STDOUT, and $STDERR.

In addition, this RFC recommends deprecating select(), since it is no
longer needed with the new fileobject approach described in RFC 14.

=head1 DESCRIPTION

Currently, filehandles are barewords, such as FILE and
PIPE. However, for Perl 6 these are planned to be renamed
to true "single-whatzitz" types (thanks Tom) and prefixed
with a $. So, the current:

   print FILE "$stuff\n";

Will become something like:

   print $fh "$stuff\n";

STDIN, STDOUT, and STDERR need to follow suit. We should
change 

   print STDERR "$stuff\n";

to:

   print $STDERR "$stuff\n";

This makes them consistent with other Perl variables, such
as @ARGV, %ENV, $VERSION, etc, all of which have the correct
distiguishing prefix for their type.

=head1 IMPLEMENTATION

All references to STDIN, STDOUT, and STDERR will have to
be changed.

Also, select() is deprecated by this new approach and can be removed.
This code block:

   $oldoutput = select($newoutput);

Can now be written simply as reassignments:

   $oldoutput = $STDOUT;
   $STDOUT = $filehandle;

The concept of a "currently selected filehandle" is no longer necessary.
If print is called without arguments, it will call "print $STDOUT"
($STDOUT->print) which will inherit whatever print exists in whatever
object $STDOUT references.

=head1 CHANGES

This RFC was frozen at version 2 on 12 Aug 2000.

=head1 REFERENCES

RFC14: Modify open() to support FileObjects and Extensibility


Reply via email to