1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 8print "1..21\n"; 9 10use File::Spec; 11 12my $devnull = File::Spec->devnull; 13 14open(try, '>Io_argv1.tmp') || (die "Can't open temp file: $!"); 15print try "a line\n"; 16close try; 17 18if ($^O eq 'MSWin32') { 19 $x = `.\\perl -e "while (<>) {print \$.,\$_;}" Io_argv1.tmp Io_argv1.tmp`; 20} 21else { 22 $x = `./perl -e 'while (<>) {print \$.,\$_;}' Io_argv1.tmp Io_argv1.tmp`; 23} 24if ($x eq "1a line\n2a line\n") {print "ok 1\n";} else {print "not ok 1\n";} 25 26if ($^O eq 'MSWin32') { 27 $x = `.\\perl -le "print 'foo'" | .\\perl -e "while (<>) {print \$_;}" Io_argv1.tmp -`; 28} 29else { 30 $x = `echo foo|./perl -e 'while (<>) {print $_;}' Io_argv1.tmp -`; 31} 32if ($x eq "a line\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";} 33 34if ($^O eq 'MSWin32') { 35 $x = `.\\perl -le "print 'foo'" |.\\perl -e "while (<>) {print \$_;}"`; 36} 37else { 38 $x = `echo foo|./perl -e 'while (<>) {print $_;}'`; 39} 40if ($x eq "foo\n") {print "ok 3\n";} else {print "not ok 3 :$x:\n";} 41 42@ARGV = ('Io_argv1.tmp', 'Io_argv1.tmp', $devnull, 'Io_argv1.tmp'); 43while (<>) { 44 $y .= $. . $_; 45 if (eof()) { 46 if ($. == 3) {print "ok 4\n";} else {print "not ok 4\n";} 47 } 48} 49 50if ($y eq "1a line\n2a line\n3a line\n") 51 {print "ok 5\n";} 52else 53 {print "not ok 5\n";} 54 55open(try, '>Io_argv1.tmp') or die "Can't open temp file: $!"; 56close try; 57open(try, '>Io_argv2.tmp') or die "Can't open temp file: $!"; 58close try; 59@ARGV = ('Io_argv1.tmp', 'Io_argv2.tmp'); 60$^I = '.bak'; 61$/ = undef; 62my $i = 6; 63while (<>) { 64 s/^/ok $i\n/; 65 ++$i; 66 print; 67} 68open(try, '<Io_argv1.tmp') or die "Can't open temp file: $!"; 69print while <try>; 70open(try, '<Io_argv2.tmp') or die "Can't open temp file: $!"; 71print while <try>; 72close try; 73undef $^I; 74 75eof try or print 'not '; 76print "ok 8\n"; 77 78eof NEVEROPENED or print 'not '; 79print "ok 9\n"; 80 81open STDIN, 'Io_argv1.tmp' or die $!; 82@ARGV = (); 83!eof() or print 'not '; 84print "ok 10\n"; 85 86<> eq "ok 6\n" or print 'not '; 87print "ok 11\n"; 88 89open STDIN, $devnull or die $!; 90@ARGV = (); 91eof() or print 'not '; 92print "ok 12\n"; 93 94@ARGV = ('Io_argv1.tmp'); 95!eof() or print 'not '; 96print "ok 13\n"; 97 98@ARGV = ($devnull, $devnull); 99!eof() or print 'not '; 100print "ok 14\n"; 101 102close ARGV or die $!; 103eof() or print 'not '; 104print "ok 15\n"; 105 106{ 107 local $/; 108 open F, 'Io_argv1.tmp' or die; 109 <F>; # set $. = 1 110 print "not " if defined(<F>); # should hit eof 111 print "ok 16\n"; 112 open F, $devnull or die; 113 print "not " unless defined(<F>); 114 print "ok 17\n"; 115 print "not " if defined(<F>); 116 print "ok 18\n"; 117 print "not " if defined(<F>); 118 print "ok 19\n"; 119 open F, $devnull or die; # restart cycle again 120 print "not " unless defined(<F>); 121 print "ok 20\n"; 122 print "not " if defined(<F>); 123 print "ok 21\n"; 124 close F; 125} 126 127END { unlink 'Io_argv1.tmp', 'Io_argv1.tmp.bak', 'Io_argv2.tmp', 'Io_argv2.tmp.bak' } 128