pipe ls输出到一行perl脚本

时间:2013-12-26 11:14:46

标签: perl bash solaris

命令

ls | perl -lane "print $ARGV[0]"

我试图将ls输出传递给一行perl脚本并打印参数,但我得到以下输出。使用的perl版本是为sun4-solaris-64int构建的5.8.4。

结果

ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)
ARRAY(0x229e8)

列出目录中的文件需要进行哪些更改?

2 个答案:

答案 0 :(得分:5)

当前行被分配到$_,因此您需要类似

的内容
ls | perl -lne 'print $_'

答案 1 :(得分:0)

即使ls只是一个例子,值得一提的是没有任何理由将它的输出传递给Perl。要获得类似ls的列表(无点文件),您可以使用:

$ perl -e 'my @f = glob("*"); print join("\n", @f) . "\n"'

$ perl -e 'my @f = <*>; print join("\n", @f) . "\n"'

请注意,第二个不接受变量替换(@f = <$mypattern>错误)。