File::Spec & NetWare
[p5sagit/p5-mst-13.2.git] / lib / File / stat.pm
index 014af60..0c479d2 100644 (file)
@@ -1,10 +1,15 @@
 package File::stat;
+use 5.006;
+
 use strict;
+use warnings;
+
+our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+
+our $VERSION = '1.00';
 
 BEGIN { 
     use Exporter   ();
-    use vars       qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-    @ISA         = qw(Exporter);
     @EXPORT      = qw(stat lstat);
     @EXPORT_OK   = qw( $st_dev    $st_ino    $st_mode 
                       $st_nlink   $st_uid    $st_gid 
@@ -14,9 +19,12 @@ BEGIN {
                    );
     %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );
 }
-use vars      @EXPORT_OK;
+use vars @EXPORT_OK;
+
+# Class::Struct forbids use of @ISA
+sub import { goto &Exporter::import }
 
-use Class::Template qw(struct);
+use Class::Struct qw(struct);
 struct 'File::stat' => [
      map { $_ => '$' } qw{
         dev ino mode nlink uid gid rdev size
@@ -40,9 +48,15 @@ sub stat ($) {
     my $arg = shift;
     my $st = populate(CORE::stat $arg);
     return $st if $st;
-    no strict 'refs';
-    require Symbol;
-    return populate(CORE::stat \*{Symbol::qualify($arg)});
+       my $fh;
+    {
+               local $!;
+               no strict 'refs';
+               require Symbol;
+               $fh = \*{Symbol::qualify($arg)};
+               return unless defined fileno $fh;
+       }
+    return populate(CORE::stat $fh);
 }
 
 1;
@@ -50,7 +64,7 @@ __END__
 
 =head1 NAME
 
-File::stat.pm - by-name interface to Perl's built-in stat() functions
+File::stat - by-name interface to Perl's built-in stat() functions
 
 =head1 SYNOPSIS
 
@@ -103,7 +117,7 @@ via the C<CORE::> pseudo-package.
 
 =head1 NOTE
 
-While this class is currently implemented using the Class::Template
+While this class is currently implemented using the Class::Struct
 module to build a struct-like class, you shouldn't rely upon this.
 
 =head1 AUTHOR