NAME
Perl6::Say - Implements the Perl 6 say
(print
-with-newline) function
SYNOPSIS
# Perl 5 code...
use Perl6::Say;
say 'boo'; # same as: print 'boo', "\n"
say STDERR 'boo'; # same as: print STDERR 'boo', "\n"
STDERR->say('boo'); # same as: print STDERR 'boo', \n"
$fh->say('boo'); # same as: print $fh 'boo', "\n";
DESCRIPTION
Implements a close simulation of say
, the Perl 6 print-with-newline function.
Use it just like print
(except that it only supports the indirect object syntax when the stream is a bareword). That is, assuming the relevant filehandles are open for output, you can use any of these:
say @data;
say FH @data;
FH->say(@data);
*FH->say(@data);
(\*FH)->say(@data);
$fh->say(@data);
but not any of these:
say {FH} @data;
say {*FH} @data;
say {\*FH} @data;
say $fh @data;
say {$fh} @data;
Interaction with output record separator
In Perl 6, say
honours the output stream's output record separator. That is, it only appends a newline if the output stream to which it's writing doesn't have an output record separator defined:
# Perl 6 code...
say $FH: "boo"; # prints: "boo\n"
$fh.ors = "\r";
say $FH: "boo"; # prints: "boo\r"
To emulate this behaviour as best it can, Perl6::Say::say
prints a newline after printing its arguments only if $\
is undefined. If $\
is defined it prints the value in $\
after printing its arguments.
# Perl 5 code...
use Perl6::Say;
say FH "boo"; # prints: "boo\n"
local $\ = "\r";
say FH "boo"; # prints: "boo\r"
WARNING
The syntax and semantics of Perl 6 is still being finalized and consequently is at any time subject to change. That means the same caveat applies to this module.
DEPENDENCIES
None.
AUTHOR
Damian Conway (damian@conway.org)
BUGS AND IRRITATIONS
As far as I can determine, Perl 5 doesn't allow us to create a subroutine that truly acts like print
. That is, one that can simultaneously be used like so:
say @data;
and like so:
say {$fh} @data;
Comments, suggestions, and patches welcome.
COPYRIGHT
Copyright (c) 2004, Damian Conway. All Rights Reserved.
This module is free software. It may be used, redistributed
and/or modified under the same terms as Perl itself.