我需要获取当前目录中的文件和子目录列表,然后使用 perl 脚本执行必要的操作。为此必须使用以下命令:ls -F | perl myfile.pl
. 问题是如何在 perl 脚本中获取 ls 命令的输出。任何帮助表示赞赏。
问问题
6232 次
5 回答
2
这很简单,只需阅读 perl 脚本的标准输入:
while(<STDIN>) {
print "---> $_"; # or whatever you need
}
于 2013-03-09T21:35:46.070 回答
2
如果您编写的不是繁重的单行 perl 脚本,则可以使用“-n”管道标志,这样您就不需要循环输入:
ls -F | perl -ne "print $_;"
于 2013-11-17T10:35:41.847 回答
1
如果您需要将目录的内容交给 Perl 脚本,最好将文件名作为参数传递。
perl myscript.pl *
然后...
for my $file (@ARGV) {
...
}
这避免了解析输出,ls -F
使您的代码更简单、更快、更健壮和可移植。
可以使用文件测试操作符在 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...
}
}
于 2013-03-09T21:52:02.973 回答
0
perl
运行命令并在脚本内处理其输出。这与管道的行为相同。
#!/usr/bin/env perl
use warnings;
use strict;
open my $ls, '-|' , 'ls -F' or die;
while ( <$ls> ) {
## Process each line.
}
于 2013-03-09T21:42:52.917 回答
0
ls -F | perl myfile.pl -
我们只需要脚本名称后的“-”参数。顺便说一句,使用“*”代替“-”不起作用。
于 2015-11-18T14:15:23.980 回答