命令
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)
列出目录中的文件需要进行哪些更改?
答案 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>
错误)。