如何在Make中编写perl one liner?

时间:2011-06-28 08:14:54

标签: perl makefile

我正在编写以下命令来解压缩makefile中的文本: -

@awk '/Exported Layer/,/Total Polygons/' out_compare.err | perl -lane '$el=$F[3] if(/Exported Layer/); print "$el: $f[3]" if (/Total Polygons/);' | cat

但它出现以下错误: -

无法修改标量赋值中的常量项目在-e第1行附近“]如果” 执行-e因编译错误而中止。

你们想提出一些建议吗? : - )

1 个答案:

答案 0 :(得分:5)

Make无视命令中的shell引用,因此Perl代码段中的$个字符被解释为make变量$e$F。这些变量在makefile中不存在,并且被展开为空,导致您看到的Perl语法错误。

你需要像这样转义$字符:

... perl -lane '$$el=$$F[3] if(/Exported Layer/); ...

另见the GNU Make manual