我需要获取当前目录中的文件和子目录列表,然后使用perl脚本执行必要的操作。必须使用以下命令:ls -F | perl myfile.pl
。问题是如何在perl脚本中达到ls命令的输出。任何帮助表示赞赏。
答案 0 :(得分:2)
这很简单,只需阅读perl脚本的标准输入:
while(<STDIN>) {
print "---> $_"; # or whatever you need
}
答案 1 :(得分:2)
如果你写的不是一个沉重的单线程perl脚本,你可以使用“-n”管道标志,这样你就不需要循环输入:
ls -F | perl -ne "print $_;"
答案 2 :(得分:1)
如果您需要将目录的内容交给Perl脚本,最好将文件名作为参数传递。
perl myscript.pl *
则...
for my $file (@ARGV) {
...
}
这避免了必须解析ls -F
的输出,使您的代码更简单,更快速,更强大和可移植。
可以使用file test operators在Perl中讲述文件的类型。
for my $file (@ARGV) {
if( -l $file ) {
...do something with a symbolic link...
}
elsif( -d $file ) {
...do something with a directory...
}
else {
...regular file...
}
}
答案 3 :(得分:0)
运行该命令并在perl
脚本中处理其输出。它与管道的行为相同。
#!/usr/bin/env perl
use warnings;
use strict;
open my $ls, '-|' , 'ls -F' or die;
while ( <$ls> ) {
## Process each line.
}
答案 4 :(得分:0)
ls -F | perl myfile.pl -
我们只需要&#34; - &#34;脚本名称后面的参数。顺便说一句,使用&#34; *&#34;取代&#34; - &#34;不行。