1

我需要在几秒钟内找到文件的年龄,但是当我给出我的 Perl 行时:

perl -e ' my @st=stat("$name"); print time -  $st[9];'

Bash 中带有“.”的变量 在文件名中,它不会找到文件并打印系统时间。否则,如果我创建一个名称为“某物”的文件,它会运行得很好。

我尝试用 \ 转义字符,但这不起作用。我真的不了解 Perl,也不知道如何解决这个问题。

谢谢您的帮助!

(请不要建议任何仅限 BASH 的解决方法,这里的很多东西都是旧的、被截断的......)

编辑:我找到了一种解决方法,但由于我是新手,所以我无法发布自己的问题的答案,所以这里是:

所以我终于找到了解决方法。

您在 Bash 中导出变量:

export name=".file.txt"

然后像这样从 Perl 调用它:$ENV{name}

它工作得很好。

编辑2:

出口的想法只是一个临时解决方案。更好的方法是按照 perreal 的建议使用单引号。

4

1 回答 1

5

您需要将 shell 变量放在单引号中:

perl -e ' my @st=stat("'"$name"'"); print time - $st[9];'

或通过参数传递:

perl -se 'my @st=stat("$name"); print time - $st[9];' -- -name="$name"
于 2013-07-17T07:49:57.680 回答