t/lib/ops.t See if Opcode works
t/lib/parsewords.t See if Text::ParseWords works
t/lib/peek.t See if Devel::Peek works
+t/lib/perlio.t See if PerlIO works
t/lib/ph.t See if h2ph works
t/lib/posix.t See if POSIX works
t/lib/safe1.t See if Safe works
=head1 DESCRIPTION
-When an undefined layer 'foo' is encountered in an C<open> or C<binmode> layer
-specification then C code performs the equivalent of:
+When an undefined layer 'foo' is encountered in an C<open> or
+C<binmode> layer specification then C code performs the equivalent of:
use PerlIO 'foo';
=item raw
A pseudo-layer which performs two functions (which is messy, but
-necessary to maintain compatibility with non-PerlIO builds of perl
+necessary to maintain compatibility with non-PerlIO builds of Perl
and their way things have been documented elsewhere).
Firstly it forces the file handle to be considered binary at that
=head2 Defaults and how to override them
-If the platform is MS-DOS like and normally does CRLF to "\n" translation
-for text files then the default layers are :
+If the platform is MS-DOS like and normally does CRLF to "\n"
+translation for text files then the default layers are :
unix crlf
--- /dev/null
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require Config; import Config;
+ if ($Config{'extensions'} !~ /\bPerlIO\b/) {
+ print "1..0 # Skip: PerlIO was not built\n";
+ exit 0;
+ }
+}
+
+use PerlIO;
+
+print "1..19\n";
+
+print "ok 1\n";
+
+my $txt = "txt$$";
+my $bin = "bin$$";
+my $utf = "utf$$";
+
+my $txtfh;
+my $binfh;
+my $utffh;
+
+print "not " unless open($txtfh, ">:crlf", $txt);
+print "ok 2\n";
+
+print "not " unless open($binfh, ">:raw", $bin);
+print "ok 3\n";
+
+print "not " unless open($utffh, ">:utf8", $utf);
+print "ok 4\n";
+
+print $txtfh "foo\n";
+print $txtfh "bar\n";
+print "not " unless close($txtfh);
+print "ok 5\n";
+
+print $binfh "foo\n";
+print $binfh "bar\n";
+print "not " unless close($binfh);
+print "ok 6\n";
+
+print $utffh "foo\x{ff}\n";
+print $utffh "bar\x{abcd}\n";
+print "not " unless close($utffh);
+print "ok 7\n";
+
+print "not " unless open($txtfh, "<:crlf", $txt);
+print "ok 8\n";
+
+print "not " unless open($binfh, "<:raw", $bin);
+print "ok 9\n";
+
+print "not " unless open($utffh, "<:utf8", $utf);
+print "ok 10\n";
+
+print "not " unless <$txtfh> eq "foo\n" && <$txtfh> eq "bar\n";
+print "ok 11\n";
+
+print "not " unless <$binfh> eq "foo\n" && <$binfh> eq "bar\n";
+print "ok 12\n";
+
+print "not " unless <$utffh> eq "foo\x{ff}\n" && <$utffh> eq "bar\x{abcd}\n";
+print "ok 13\n";
+
+print "not " unless eof($txtfh);
+print "ok 14\n";
+
+print "not " unless eof($binfh);
+print "ok 15\n";
+
+print "not " unless eof($utffh);
+print "ok 16\n";
+
+print "not " unless close($txtfh);
+print "ok 17\n";
+
+print "not " unless close($binfh);
+print "ok 18\n";
+
+print "not " unless close($utffh);
+print "ok 19\n";
+
+END {
+ 1 while unlink $txt;
+ 1 while unlink $bin;
+ 1 while unlink $utf;
+}
+