2015-02-09 4 views
1

Следующий скрипт не производит никакого вывода:Неожиданный выход из скрипта PERL

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(), должен иметь что-то значимое в нем, но я не видел, чтобы это было на практике.

Это 64 бит ActiveState Perl на Windows, 7.

ли Stat не делать то, что ответы на эти вопросы, казалось, означают, или же дату файла в Perl/временные функции не работают под Windows (или 64 битной Windows, или некоторые такие ?)

+0

Встроенный [ 'stat'] (http://perldoc.perl.org/functions/stat.html) является не то же самое, что 'stat' из [' File :: stat'] (https://metacpan.org/pod/File::stat) (это не то же самое, что ['File :: Stat'] (https: //metacpan.org/pod/File::Stat)). – ThisSuitIsBlackNot

+0

[ikegami уже сделал.] (Http://stackoverflow.com/a/28420020/176646) – ThisSuitIsBlackNot

+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::Stat или File::stat. Они просто предоставляют разные интерфейсы для одной и той же функциональности.

Если вы хотите сделать это с File::stat это выглядит следующим образом:

use File::stat; 

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

Файл :: stat заменяет stat тем, у кого другой интерфейс. Удалите use File::stat; или используйте его stat соответствующим образом.