8 BEGIN { require "./test.pl"; }
14 my $devnull = File::Spec->devnull;
16 open(TRY, '>Io_argv1.tmp') || (die "Can't open temp file: $!");
18 close TRY or die "Could not close: $!";
21 prog => 'while (<>) { print $., $_; }',
22 args => [ 'Io_argv1.tmp', 'Io_argv1.tmp' ],
24 is($x, "1a line\n2a line\n", '<> from two files');
28 prog => 'while (<>) { print $_; }',
30 args => [ 'Io_argv1.tmp', '-' ],
32 is($x, "a line\nfoo\n", ' from a file and STDIN');
35 prog => 'while (<>) { print $_; }',
38 is($x, "foo\n", ' from just STDIN');
42 # 5.10 stopped autovivifying scalars in globs leading to a
43 # segfault when $ARGV is written to.
44 runperl( prog => 'eof()', stdin => "nothing\n" );
45 is( 0+$?, 0, q(eof() doesn't segfault) );
48 @ARGV = ('Io_argv1.tmp', 'Io_argv1.tmp', $devnull, 'Io_argv1.tmp');
52 is($., 3, '$. counts <>');
56 is($y, "1a line\n2a line\n3a line\n", '<> from @ARGV');
59 open(TRY, '>Io_argv1.tmp') or die "Can't open temp file: $!";
60 close TRY or die "Could not close: $!";
61 open(TRY, '>Io_argv2.tmp') or die "Can't open temp file: $!";
62 close TRY or die "Could not close: $!";
63 @ARGV = ('Io_argv1.tmp', 'Io_argv2.tmp');
64 $^I = '_bak'; # not .bak which confuses VMS
73 open(TRY, '<Io_argv1.tmp') or die "Can't open temp file: $!";
75 open(TRY, '<Io_argv2.tmp') or die "Can't open temp file: $!";
77 close TRY or die "Could not close: $!";
84 ok( eof NEVEROPENED, 'eof() true on unopened filehandle' );
87 open STDIN, 'Io_argv1.tmp' or die $!;
89 ok( !eof(), 'STDIN has something' );
93 open STDIN, $devnull or die $!;
95 ok( eof(), 'eof() true with empty @ARGV' );
97 @ARGV = ('Io_argv1.tmp');
100 @ARGV = ($devnull, $devnull);
103 close ARGV or die $!;
104 ok( eof(), 'eof() true after closing ARGV' );
108 open F, 'Io_argv1.tmp' or die "Could not open Io_argv1.tmp: $!";
112 open F, $devnull or die;
118 open F, $devnull or die; # restart cycle again
121 close F or die "Could not close: $!";
124 # This used to dump core
125 fresh_perl_is( <<'**PROG**', "foobar", {}, "ARGV aliasing and eof()" );
126 open OUT, ">Io_argv3.tmp" or die "Can't open temp file: $!";
129 open IN, "Io_argv3.tmp" or die "Can't open temp file: $!";
133 print "bar" if eof();
136 unlink "Io_argv3.tmp";
140 1 while unlink 'Io_argv1.tmp', 'Io_argv1.tmp_bak',
141 'Io_argv2.tmp', 'Io_argv2.tmp_bak', 'Io_argv3.tmp';