我认为这可能是由于转义字符引起的。 脚本和正在访问的文件(input.scs)也位于同一目录中。
my @var=`grep -o '"[^"]\+"' ./input.scs | sed 's/"//g'`;
print "-D @var\n";
实际上应该生成多行时,输出将返回空。 grep命令在引号内搜索数据并打印数据。
答案 0 :(得分:0)
正如@ikegami所评论的那样,您需要在反引号运算符内将反斜杠换行,否则Perl将尝试对其进行插值:
∃y IsKing(y) → ∀x (IsMan(x) ∧ Loves(x,y))
但是,除了使用外部命令外,您还可以使用Perl联机代码来完成此操作:
my @var = `grep -o '"[^"]\\+"' input.scs | sed 's/"//g'`;
这将返回相同的输出,即所有匹配项的列表,并删除双引号。
或者如果您想就地编辑文件:
perl -ne 'print "$1\n" while (m/"([^"]+)"/g)' input.scs