package open;
use warnings;
-our $VERSION = '1.08';
+our $VERSION = '1.09';
require 5.008001; # for PerlIO::get_layers()
}
}
if ($type eq 'IN') {
- _drop_oldenc(*STDIN, @val);
+ _drop_oldenc(*STDIN, @val) if $std;
$in = join(' ', @val);
}
elsif ($type eq 'OUT') {
- _drop_oldenc(*STDOUT, @val);
+ if ($std) {
+ _drop_oldenc(*STDOUT, @val);
+ _drop_oldenc(*STDERR, @val);
+ }
$out = join(' ', @val);
}
elsif ($type eq 'IO') {
- _drop_oldenc(*STDIN, @val);
- _drop_oldenc(*STDOUT, @val);
+ if ($std) {
+ _drop_oldenc(*STDIN, @val);
+ _drop_oldenc(*STDOUT, @val);
+ _drop_oldenc(*STDERR, @val);
+ }
$in = $out = join(' ', @val);
}
else {
require './test.pl';
}
-plan 23;
+plan 24;
# open::import expects 'open' as its first argument, but it clashes with open()
sub import {
"test for an endless loop in PerlIO_find_layer");
}
+is runperl(
+ progs => [
+ 'use open q\:encoding(UTF-8)\, q-:std-;',
+ 'use open q\:encoding(UTF-8)\;',
+ 'if(($_ = <STDIN>) eq qq-\x{100}\n-) { print qq-stdin ok\n- }',
+ 'else { print qq-got -, join(q q q, map ord, split//), "\n" }',
+ 'print STDOUT qq-\x{ff}\n-;',
+ 'print STDERR qq-\x{ff}\n-;',
+ ],
+ stdin => "\xc4\x80\n",
+ stderr => 1,
+ ),
+ "stdin ok\n\xc3\xbf\n\xc3\xbf\n",
+ "use open without :std does not affect standard handles",
+;
+
END {
1 while unlink "utf8";
1 while unlink "a";