1#!./perl 2# vim: ts=4 sts=4 sw=4: 3 4# $! may not be set if EOF was reached without any error. 5# http://rt.perl.org/rt3/Ticket/Display.html?id=39060 6 7use strict; 8use Config; 9 10require './test.pl'; 11 12plan( tests => 16 ); 13 14my $test_prog = 'undef $!;while(<>){print}; print $!'; 15my $saved_perlio; 16 17BEGIN { 18 $saved_perlio = $ENV{PERLIO}; 19} 20END { 21 delete $ENV{PERLIO}; 22 $ENV{PERLIO} = $saved_perlio if defined $saved_perlio; 23} 24 25for my $perlio ('perlio', 'stdio') { 26 $ENV{PERLIO} = $perlio; 27SKIP: 28 for my $test_in ("test\n", "test") { 29 skip("Guaranteed newline at EOF on VMS", 4) if $^O eq 'VMS' && $test_in eq 'test'; 30 skip("[perl #71504] OpenBSD test failures in errno.t with ithreads and perlio", 8) 31 if $^O eq 'openbsd' && $Config{useithreads} && $perlio eq 'stdio'; 32 my $test_in_esc = $test_in; 33 $test_in_esc =~ s/\n/\\n/g; 34 for my $rs_code ('', '$/=undef', '$/=\2', '$/=\1024') { 35 TODO: 36 { 37 local $::TODO = "We get RMS\$_IOP at EOF on VMS when \$/ is undef" 38 if $^O eq 'VMS' && $rs_code eq '$/=undef'; 39 is( runperl( prog => "$rs_code; $test_prog", 40 stdin => $test_in, stderr => 1), 41 $test_in, 42 "Wrong errno, PERLIO=$ENV{PERLIO} stdin='$test_in_esc', $rs_code"); 43 } 44 } 45 } 46} 47