perl脚本的意外输出

时间:2015-02-09 21:41:04

标签: perl stat activestate

以下脚本不产生输出:

use File::stat;
use Time::localtime;
my $filename = 'c:\testfile';
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
              $atime,$mtime,$ctime,$blksize,$blocks)
                  = stat($filename);
print("$mtime");

c:\testfile存在。

我在SO上看到了几个答案 - this, for example - 这似乎表明stat()返回的数组应该有一些有意义的答案,但我还没有在实践中看到了这种情况。

这是Windows 7上的64位ActiveState Perl。

统计数据不能做那些答案似乎暗示的事情,或者Perl的文件日期/时间功能在Windows(或64位Windows,或某些类似的?)下无法正常工作吗?

2 个答案:

答案 0 :(得分:7)

这很好用:

#!perl

use strict;
use warnings;

my $filename = 'c:\Users\username\Documents\asdf23rasdf.pl';
my ($dev,  $ino,   $mode,  $nlink, $uid,     $gid, $rdev,
    $size, $atime, $mtime, $ctime, $blksize, $blocks
) = stat($filename);
print($mtime);

正如评论中提到的那样 - perl的内置统计工作如上所述。您无需使用File::StatFile::stat即可。它们只为相同的功能提供不同的接口。

如果您想使用File::stat,请按以下步骤操作:

use File::stat;

my $filename = 'c:\Users\username\Documents\asdf23rasdf.pl';
my $stats = stat($filename);
print( $stats -> mtime);

答案 1 :(得分:6)

File :: stat将stat替换为具有不同接口的use File::stat;。删除stat或正确使用其{{1}}。