#!./perl
-# $RCSfile$
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+}
+
+# $RCSfile$
$| = 1;
-$^W = 1;
+use warnings;
$Is_VMS = $^O eq 'VMS';
+$Is_Dos = $^O eq 'dos';
-print "1..66\n";
+print "1..70\n";
my $test = 1;
# 1..9
{
- unlink("afile") if -f "afile";
+ unlink("afile") if -f "afile";
print "$!\nnot " unless open(my $f,"+>afile");
ok;
binmode $f;
- print "not " unless -f "afile";
+ print "not " unless -f "afile";
ok;
print "not " unless print $f "SomeData\n";
ok;
$b = <$f>;
print "not " unless $b eq "SomeData\n";
ok;
- print "not " unless -f $f;
+ print "not " unless -f $f;
ok;
- eval { die "Message" };
+ eval { die "Message" };
# warn $@;
print "not " unless $@ =~ /<\$f> line 1/;
ok;
print "not " unless close($f);
ok;
- unlink("afile");
+ unlink("afile");
}
# 10..12
print "not " unless -s 'afile' > 20;
ok;
- unlink("afile");
+ unlink("afile");
}
# 24..26
1;
EOE
ok;
-$@ =~ /Unknown open\(\) mode \'<&\'/ or print "not ";
+$@ =~ /Bad filehandle:\s+afile/ or print "not ";
ok;
# local $file tests
# 33..41
{
- unlink("afile") if -f "afile";
+ unlink("afile") if -f "afile";
print "$!\nnot " unless open(local $f,"+>afile");
ok;
binmode $f;
- print "not " unless -f "afile";
+ print "not " unless -f "afile";
ok;
print "not " unless print $f "SomeData\n";
ok;
$b = <$f>;
print "not " unless $b eq "SomeData\n";
ok;
- print "not " unless -f $f;
+ print "not " unless -f $f;
ok;
- eval { die "Message" };
+ eval { die "Message" };
# warn $@;
print "not " unless $@ =~ /<\$f> line 1/;
ok;
print "not " unless close($f);
ok;
- unlink("afile");
+ unlink("afile");
}
# 42..44
print "not " unless -s 'afile' > 20;
ok;
- unlink("afile");
+ unlink("afile");
}
# 56..58
1;
EOE
ok;
-$@ =~ /Unknown open\(\) mode \'<&\'/ or print "not ";
+$@ =~ /Bad filehandle:\s+afile/ or print "not ";
ok;
# 65..66
{
local *F;
for (1..2) {
- open(F, "echo #foo|") or print "not ";
+ if ($Is_Dos) {
+ open(F, "echo \\#foo|") or print "not ";
+ } else {
+ open(F, "echo #foo|") or print "not ";
+ }
print <F>;
close F;
}
ok;
for (1..2) {
- open(F, "-|", "echo #foo") or print "not ";
+ if ($Is_Dos) {
+ open(F, "-|", "echo \\#foo") or print "not ";
+ } else {
+ open(F, "-|", "echo #foo") or print "not ";
+ }
print <F>;
close F;
}
ok;
}
+
+# 67..70 - magic temporary file via 3 arg open with undef
+{
+ open(my $x,"+<",undef) or print "not ";
+ ok;
+ print "not " unless defined(fileno($x));
+ ok;
+ select $x;
+ ok; # goes to $x
+ select STDOUT;
+ seek($x,0,0);
+ print <$x>;
+ print "not " unless tell($x) > 3;
+ ok;
+}