perl 脚本的意外输出

Unexpected output from perl script

以下脚本不产生输出:

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 位 ActivePerl

stat 是否没有按照这些答案似乎暗示的那样进行操作,或者 Perl 的文件 date/time 函数在 Windows(或 64 位 Windows 或其他类似的系统下无法工作?)

File::stat 将 stat 替换为具有不同界面的文件。删除 use File::stat; 或适当使用其 stat

这很好用:

#!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 的内置 stat 与上面的工作方式类似。您不需要使用 File::StatFile::stat 来执行此操作。它们只是为相同的功能提供不同的接口。

如果你想用 File::stat 来做,它是这样的:

use File::stat;

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