Perl打印解释

时间:2019-08-05 13:35:01

标签: perl

我正在研究环境中的一个旧脚本,并在嵌入到shell脚本中的perl命令下面找到了它。

#!/usr/bin/perl
printf "%s %s\\n", (stat($ARGV[1]))[9], $ARGV[0];

我不了解Perl。 有人可以帮助我了解作者在这里试图做什么吗?

预先感谢

2 个答案:

答案 0 :(得分:3)

stat函数返回作为参数给出的文件的状态,第9个元素是最后一次mmodify时间。

此脚本将打印最后的修改时间和第一个参数中提供的值。

在不知道所有论点的情况下不可能多说。

答案 1 :(得分:3)

它显示文件的修改时间(以Unix秒为单位)。

@ARGV数组包含所有命令行参数,其中$ARGV[0]是第一个,$ARGV[1]是第二个,依此类推。 (请注意与C或Python的区别,其中项目0是脚本本身的名称。)

stat($filename)返回一个列表,其中包含C stat()函数所期望的所有字段。它的第9个元素是文件的修改时间。 (请参见perldoc -f stat。)

因此(stat($ARGV[1]))[9]为您提供指定为脚本第二个参数的文件的mtime。 (为了应付Perl的语法,额外的括号是必要的,出于某种原因,该语法不允许func()[]。)

printf的工作原理与C printf()或Bash printf完全相同,并且每个%s都被扩展为相应的参数;因此它将以Unix秒,空格和脚本的第一个参数的形式显示mtime。

$ ./yourscript.pl Hello! myfile.txt
1565012664 Hello!

$ date -d @1565012664
Mon Aug  5 16:44:24 EEST 2019