From: chromatic Date: Thu, 21 Feb 2002 14:17:35 +0000 (-0700) Subject: Find Filehandles Fully (was Re: [ID 20020221.004] [PATCH] File/stat.pm , Perl 5.6.1) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=83716b1ec25b41f24c18a3bf323e7910d4cadf90;p=p5sagit%2Fp5-mst-13.2.git Find Filehandles Fully (was Re: [ID 20020221.004] [PATCH] File/stat.pm , Perl 5.6.1) Message-ID: <20020221211823.80922.qmail@onion.perl.org> p4raw-id: //depot/perl@14819 --- diff --git a/lib/File/stat.pm b/lib/File/stat.pm index 0c479d2..af75bef 100644 --- a/lib/File/stat.pm +++ b/lib/File/stat.pm @@ -53,7 +53,7 @@ sub stat ($) { local $!; no strict 'refs'; require Symbol; - $fh = \*{Symbol::qualify($arg)}; + $fh = \*{ Symbol::qualify( $arg, caller() )}; return unless defined fileno $fh; } return populate(CORE::stat $fh); diff --git a/lib/File/stat.t b/lib/File/stat.t index 0487b8b..0c2f22d 100644 --- a/lib/File/stat.t +++ b/lib/File/stat.t @@ -16,10 +16,10 @@ BEGIN { $hasst = 0 unless $Config{'i_sysstat'} eq 'define'; unless ($hasst) { plan skip_all => "no sys/stat.h"; exit 0 } our @stat = stat "TEST"; # This is the function stat. - unless (@stat) { print "1..0 # Skip: no file TEST\n"; exit 0 } + unless (@stat) { plan skip_all => "1..0 # Skip: no file TEST"; exit 0 } } -plan tests => 16; +plan tests => 19; use_ok( 'File::stat' ); @@ -56,6 +56,20 @@ is( $stat->blksize, $stat[11], "IO block size in position 11" ); is( $stat->blocks, $stat[12], "number of blocks in position 12" ); +SKIP: { + local *STAT; + skip(2, "Could not open file: $!") unless open(STAT, 'TEST'); + ok( File::stat::stat('STAT'), '... should be able to find filehandle' ); + + package foo; + local *STAT = *main::STAT; + main::ok( my $stat2 = File::stat::stat('STAT'), + '... and filehandle in another package' ); + close STAT; + + main::is( "@$stat", "@$stat2", '... and must match normal stat' ); +} + local $!; $stat = stat '/notafile'; isn't( $!, '', 'should populate $!, given invalid file' );