2016-03-04 40 views
0

如何测试列出的任何文件是否在perl编程的最后12小时内被修改过。打印这些文件的名称。开放匿名管道Perl编程

这是我的代码,但它不起作用。任何人都可以教我如何解决它?

use warnings; 
    open(LISTDIR, "find ~ -type f -mtime 0 -ls /Users/Perl/ | ") or die "PIPE failed $!\n"; 
    while($filename = <LISTDIR>){ 
    print $filename; 
    } 
+1

-ls不带参数。 – laune

+0

“不起作用”是什么意思? –

+0

我希望在过去的12个小时里有这些文件,但它是所有这些文件。 – Johnny

回答

0
use warnings; 
open(LISTDIR, "find ~ -type f -mtime 0 -ls | ") or die "PIPE failed $!\n"; 
while($filename = <LISTDIR>){ 
    print $filename; 
} 

你应该看到一个错误信息:

find: paths must precede expression: /Users/Perl 

这说明了一切。

+1

不要忘记关闭文件句柄并检查close的成功。打开管道时,'open'只返回'fork'是否成功,而不管被调用的程序是否成功。 – ThisSuitIsBlackNot

+0

我希望在过去的12个小时里有这些文件,但它是所有这些文件。 – Johnny