我正在尝试在Windows上使用Perl。我认为我在语法或访问CPAN信息时遇到问题。我能找到什么信息给出了如何使用这些函数的片段,当我尝试使用这些例子时,我得到了错误。
我不知道怎么去CPAN。我尝试安装它,但在GCC
和dmake
上失败了两次。我不知道这是否有帮助。我使用了http://www.cpan.org/modules/INSTALL.html cpan App::cpanminus
我有一个路径为ex的文件名:
c:\users\me\directory\\*.*
此文件包含路径+文件名记录列表,我需要文件的时间和大小。当我读取记录时,我可以验证路径+文件名是否正确。
我在批处理文件中有一些帮助。我正在使用%~t1
和%~z1
,如下所示:
将完整路径传递给批处理文件,然后使用
if "%~t1" == "" (
echo " AN ERROR OCURRED FOR THIS FILE/n"
) else (
echo fpath =%~1
echo time = %~t1
echo size = %~z1
)
当我试图把它带到Perl时,我无法让它工作。我已经用尽了一些提示和想法。
我尝试使用类似的IF ( "%~t1" == "" ) {}
,但我得到(missing operator before t1?)
。
我尝试使用$str1 = %~t1
并获得了"str1" not allowed while "strict subs" in use.
我尝试使用$info->$ctime
并获得requires explicit package name.
我尝试my $modtime = (stat($dirHandle))[9] with print "mod time = $mod_time \n";
并且没有这样的类mod_time和语法错误。
我尝试使用perl 5.20.1的perl编程文档文件中的以下内容
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks)
= stat($filename);
我看不出那是怎么回事,但事实并非如此。我有很多要求显式包名
我从同一个参考文献中尝试了这个
use File::stat;
$sb = stat($filename);
printf "File is %s, size is %s, perm %04o, mtime %s\n",
$filename, $sb->size, $sb->mode & 07777,
scalar localtime $sb->mtime;
我不记得所有的错误
每当我看到File :: stat或Path :: Class :: File时,我都不知道如何获取这些内容。
对于得到答案,perl僧侣有点过头了。我迷失在所有的ifs中。
感谢你给我的任何帮助。
答案 0 :(得分:2)
听起来你在问如何获取文件的大小和最后修改时间。
使用stat
:
use POSIX qw( strftime );
my $qfn = 'c:\\users\\me\\directory\\file';
my ($size, $mtime) = (stat($qfn))[7, 9]
or die("Can't stat \"$qfn\": $!\n");
printf("File %s: size=%s modified=%s\n",
$qfn,
$size,
strftime("%Y-%m-%d %H:%M:%S", localtime($mtime)),
);
使用File::stat,将stat
替换为具有友好界面的函数:
use File::stat qw( stat );
use POSIX qw( strftime );
my $qfn = 'c:\\users\\me\\directory\\file';
my $stat = stat($qfn)
or die("Can't stat \"$qfn\": $!\n");
printf("File %s: size=%s modified=%s\n",
$qfn,
$stat->size,
strftime("%Y-%m-%d %H:%M:%S", localtime($stat->mtime)),
);
提到的两个模块都带有Perl。无需安装它们。