8 BEGIN { require "./test.pl"; }
12 my ($devnull, $no_devnull);
15 $no_devnull = "no dynamic loading on miniperl, File::Spec not built, so can't determine /dev/null";
18 $devnull = File::Spec->devnull;
21 open(TRY, '>Io_argv1.tmp') || (die "Can't open temp file: $!");
23 close TRY or die "Could not close: $!";
26 prog => 'while (<>) { print $., $_; }',
27 args => [ 'Io_argv1.tmp', 'Io_argv1.tmp' ],
29 is($x, "1a line\n2a line\n", '<> from two files');
33 prog => 'while (<>) { print $_; }',
35 args => [ 'Io_argv1.tmp', '-' ],
37 is($x, "a line\nfoo\n", ' from a file and STDIN');
40 prog => 'while (<>) { print $_; }',
43 is($x, "foo\n", ' from just STDIN');
47 # 5.10 stopped autovivifying scalars in globs leading to a
48 # segfault when $ARGV is written to.
49 runperl( prog => 'eof()', stdin => "nothing\n" );
50 is( 0+$?, 0, q(eof() doesn't segfault) );
53 @ARGV = is_miniperl() ? ('Io_argv1.tmp', 'Io_argv1.tmp', 'Io_argv1.tmp')
54 : ('Io_argv1.tmp', 'Io_argv1.tmp', $devnull, 'Io_argv1.tmp');
58 is($., 3, '$. counts <>');
62 is($y, "1a line\n2a line\n3a line\n", '<> from @ARGV');
65 open(TRY, '>Io_argv1.tmp') or die "Can't open temp file: $!";
66 close TRY or die "Could not close: $!";
67 open(TRY, '>Io_argv2.tmp') or die "Can't open temp file: $!";
68 close TRY or die "Could not close: $!";
69 @ARGV = ('Io_argv1.tmp', 'Io_argv2.tmp');
70 $^I = '_bak'; # not .bak which confuses VMS
79 open(TRY, '<Io_argv1.tmp') or die "Can't open temp file: $!";
81 open(TRY, '<Io_argv2.tmp') or die "Can't open temp file: $!";
83 close TRY or die "Could not close: $!";
90 ok( eof NEVEROPENED, 'eof() true on unopened filehandle' );
93 open STDIN, 'Io_argv1.tmp' or die $!;
95 ok( !eof(), 'STDIN has something' );
100 skip_if_miniperl($no_devnull, 4);
101 open STDIN, $devnull or die $!;
103 ok( eof(), 'eof() true with empty @ARGV' );
105 @ARGV = ('Io_argv1.tmp');
108 @ARGV = ($devnull, $devnull);
111 close ARGV or die $!;
112 ok( eof(), 'eof() true after closing ARGV' );
117 open my $fh, 'Io_argv1.tmp' or die "Could not open Io_argv1.tmp: $!";
121 skip_if_miniperl($no_devnull, 5);
123 open $fh, $devnull or die;
124 ok( defined(<$fh>) );
129 open $fh, $devnull or die; # restart cycle again
130 ok( defined(<$fh>) );
132 close $fh or die "Could not close: $!";
135 # This used to dump core
136 fresh_perl_is( <<'**PROG**', "foobar", {}, "ARGV aliasing and eof()" );
137 open OUT, ">Io_argv3.tmp" or die "Can't open temp file: $!";
140 open IN, "Io_argv3.tmp" or die "Can't open temp file: $!";
144 print "bar" if eof();
147 unlink "Io_argv3.tmp";
151 unlink_all 'Io_argv1.tmp', 'Io_argv1.tmp_bak',
152 'Io_argv2.tmp', 'Io_argv2.tmp_bak', 'Io_argv3.tmp';