-
-
14 Jul 2010 09:27:26 UTC
- Distribution: Perl6-Say
- Module version: 0.16
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Repository
- Issues (0)
- Testers (335 / 7 / 1)
- Kwalitee
Bus factor: 4- 95.08% Coverage
- License: perl_5
- Perl: v5.8.0
- Activity
24 month- Tools
- Download (10.98KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 1 contributors- Alexandr Ciornii (alexchorny@gmail.com)
- Dependencies
- Carp
- IO::Handle
- Scalar::Util
- Test::More
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
- NAME
- SYNOPSIS
- DESCRIPTION
- WARNING
- DEPENDENCIES
- AUTHOR and MAINTAINER
- ACKNOWLEDGMENTS
- BUGS AND IRRITATIONS
- COPYRIGHT
NAME
Perl6::Say -
print()
, but no newline neededSYNOPSIS
# 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"; say(); # same as: print "$_\n"; say undef; # same as: print "\n";
DESCRIPTION
Note for Users of Perl 5.10
You don't need this module. The Perl 6
say
function is available in Perl 5.10 by sayinguse feature 'say';
. Hence, this module is of interest only to users of Perl 5.6 and 5.8.If you have Perl 5.10 installed, see the 510/ directory in this distribution for some elementary examples of
say
taken fromperldoc feature
.General
Implements a close simulation of the
say
function in Perl 6, which acts likeprint
but automatically appends a newline.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); say $fh, @data; $fh->say(@data);
but not any of these:
say {FH} @data; say {*FH} @data; say {\*FH} @data; say $fh @data; say {$fh} @data;
Additional Permitted Usages
As demonstrated in the test suite accompanying this distribution,
Perl6::Say::say()
can be used in all the following situations.$string = q{}; open FH, ">", \$string; say FH qq{Hello World}; # print to a string close FH; # requires Perl 5.8.0 or later use FileHandle; $fh = FileHandle->new($file, 'w'); if (defined $fh) { say $fh, qq{Hello World}; $fh->close; } use IO::File; $fh = IO::File->new($file, 'w'); if (defined $fh) { say $fh, qq{Hello World}; $fh->close; } $string = q{}; open FH, ">", \$string; # requires Perl 5.8.0 or later select(FH); say qq{Hello World}; close FH;
Interaction with Output Record Separator
In Perl 6,
say @stuff
is exactly equivalent toCore::print @stuff, "\n"
.That means that a call to
say
appends any output record separator (ORS) after the added newline (though in Perl 6, the ORS is an attribute of the filehandle being used, rather than a global$/
variable).IO::Handle::say()
IO::Handle version 1.27 or later (which, confusingly, is found in IO distribution 1.23 and later) also implements a
say
method. Perl6::Say provides its ownsay
method to IO::Handle ifIO::Handle::say
is not available.Usage with Older Perls
As noted above, some aspects of
Perl6::Say::say()
will not work with versions of Perl earlier than 5.8.0. This is not due to any problem with this module; it is simply that Perl did not support printing to an in-memory file (print \$string, "\n";
) prior to that point. (Thanks to a CPAN testers report from David Cantrell for identifying this limitation.)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
No dependencies other than on modules included with the Perl core as of version 5.8.0.
Some of the files in the test suite accompanying this distribution use non-core CPAN module IO::Capture::Stdout. Tests calling IO::Capture::Stdout methods are enclosed in
SKIP
blocks and so should pose no obstacle to installation of the distribution on systems lacking IO::Capture. (However, the maintainer strongly recommends IO::Capture for developers who write a lot of test code. So please consider installing it!)AUTHOR and MAINTAINER
AUTHOR
Damian Conway (damian@conway.org).
MAINTAINER
Alexandr Ciornii (alexchorny@gmail.com)
ACKNOWLEDGMENTS
Thanks to Damian Conway for dreaming this up. Thanks to David A Golden for a close review of the documentation. Thanks to CPAN tester Jost Krieger for reporting an error in my SKIP block count in one test file.
BUGS AND IRRITATIONS
As far as we 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.
Module Install Instructions
To install Perl6::Say, copy and paste the appropriate command in to your terminal.
cpanm Perl6::Say
perl -MCPAN -e shell install Perl6::Say
For more information on module installation, please visit the detailed CPAN module installation guide.