我正在研究环境中的一个旧脚本,并在嵌入到shell脚本中的perl命令下面找到了它。
#!/usr/bin/perl
printf "%s %s\\n", (stat($ARGV[1]))[9], $ARGV[0];
我不了解Perl。 有人可以帮助我了解作者在这里试图做什么吗?
预先感谢
答案 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