目录查询中的反引号会生成管道问题

时间:2013-06-11 11:14:46

标签: perl grep pipe ls

我正在尝试使用目录$ dir中的文件名列表填充Perl数组,并且我想要排除目录。我的代码是:

my @lsArray = `ls -p $dir | grep -v '/$'`;

但是它会产生这个错误:

sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file

我似乎无法找到正确执行此操作的引号组合。感谢....

1 个答案:

答案 0 :(得分:2)

为什么你使用反引号来表示perl可以自行完成的事情呢?

my @files = grep !-d, <$dir/*>;

顺便说一下,你的错误是$'是一个被插值的perl预定义变量(postmatch),因此缺少结束'

如果您使用过

use strict;
use warnings;

Perl会告诉你问题是什么:

Use of uninitialized value $' in quoted execution (``, qx) at ...

始终使用这两个pragma:错误不会因为你不了解它而变得难以处理。