【问题标题】:Unexpected output from perl scriptperl 脚本的意外输出
【发布时间】:2015-02-09 21:41:04
【问题描述】:

以下脚本不产生任何输出:

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 的文件日期/时间函数在 Windows(或 64 位 Windows,或类似的一些)下不起作用?

【问题讨论】:

  • 内置的statFile::stat中的stat不同(与File::Stat不同)。
  • “适当使用它”不是答案。
  • "Remove use File::stat;" is 一个答案,并且“File::stat 替换 stat 具有不同的界面”与我在我的评论(链接除外)。无论如何,你现在有两个答案,我不需要再添加另一个了。
  • 链接除外。对。他的回答不够彻底,不足以成为一个好的评论。但正如你提到的,Sobrique 做得很好。

标签: perl stat activestate


【解决方案1】:

这很好用:

#!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);

正如 cmets 中所提到的 - 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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      • 2017-11-21
      • 1970-01-01
      相关资源
      最近更新 更多