⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stat.pm

📁 Astercon2 开源软交换 2.2.0
💻 PM
字号:
package File::stat;use 5.006;use strict;use warnings;our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);our $VERSION = '1.00';BEGIN {     use Exporter   ();    @EXPORT      = qw(stat lstat);    @EXPORT_OK   = qw( $st_dev	   $st_ino    $st_mode 		       $st_nlink   $st_uid    $st_gid 		       $st_rdev    $st_size 		       $st_atime   $st_mtime  $st_ctime 		       $st_blksize $st_blocks		    );    %EXPORT_TAGS = ( FIELDS => [ @EXPORT_OK, @EXPORT ] );}use vars @EXPORT_OK;# Class::Struct forbids use of @ISAsub import { goto &Exporter::import }use Class::Struct qw(struct);struct 'File::stat' => [     map { $_ => '$' } qw{	 dev ino mode nlink uid gid rdev size	 atime mtime ctime blksize blocks     }];sub populate (@) {    return unless @_;    my $stob = new();    @$stob = (	$st_dev, $st_ino, $st_mode, $st_nlink, $st_uid, $st_gid, $st_rdev,        $st_size, $st_atime, $st_mtime, $st_ctime, $st_blksize, $st_blocks ) 	    = @_;    return $stob;} sub lstat ($)  { populate(CORE::lstat(shift)) }sub stat ($) {    my $arg = shift;    my $st = populate(CORE::stat $arg);    return $st if $st;	my $fh;    {		local $!;		no strict 'refs';		require Symbol;		$fh = \*{ Symbol::qualify( $arg, caller() )};		return unless defined fileno $fh;	}    return populate(CORE::stat $fh);}1;__END__=head1 NAMEFile::stat - by-name interface to Perl's built-in stat() functions=head1 SYNOPSIS use File::stat; $st = stat($file) or die "No $file: $!"; if ( ($st->mode & 0111) && $st->nlink > 1) ) {     print "$file is executable with lotsa links\n"; }  use File::stat qw(:FIELDS); stat($file) or die "No $file: $!"; if ( ($st_mode & 0111) && $st_nlink > 1) ) {     print "$file is executable with lotsa links\n"; } =head1 DESCRIPTIONThis module's default exports override the core stat() and lstat() functions, replacing them with versions that return "File::stat" objects.  This object has methods thatreturn the similarly named structure field name from thestat(2) function; namely,dev,ino,mode,nlink,uid,gid,rdev,size,atime,mtime,ctime,blksize,andblocks.  You may also import all the structure fields directly into your namespaceas regular variables using the :FIELDS import tag.  (Note that this stilloverrides your stat() and lstat() functions.)  Access these fields asvariables named with a preceding C<st_> in front their method names.Thus, C<$stat_obj-E<gt>dev()> corresponds to $st_dev if you importthe fields.To access this functionality without the core overrides,pass the C<use> an empty import list, and then accessfunction functions with their full qualified names.On the other hand, the built-ins are still availablevia the C<CORE::> pseudo-package.=head1 BUGSAs of Perl 5.8.0 after using this module you cannot use the implicitC<$_> or the special filehandle C<_> with stat() or lstat(), tryingto do so leads into strange errors.  The workaround is for C<$_> tobe explicit    my $stat_obj = stat $_;and for C<_> to explicitly populate the object using the unexportedand undocumented populate() function with CORE::stat():    my $stat_obj = File::stat::populate(CORE::stat(_));=head1 NOTEWhile this class is currently implemented using the Class::Structmodule to build a struct-like class, you shouldn't rely upon this.=head1 AUTHORTom Christiansen

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -