如何在Make中编写perl one liner?

cra*_*rog 2 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
Run Code Online (Sandbox Code Playgroud)

但它给出了以下错误: -

如果"执行-e由于编译错误而中止,则无法修改-e第1行中标量赋值中的常量项".

你们想建议一下吗?:-)

Joh*_*all 5

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

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

... perl -lane '$$el=$$F[3] if(/Exported Layer/); ...
Run Code Online (Sandbox Code Playgroud)

另请参阅GNU Make手册.