如何从makefile运行Perl one liner?

Fra*_*ank 5 perl makefile

我知道下面的perl one liner很简单,有效并且做全局替换,A代表a; 但是如何在makefile中运行它?

perl -pi -e "s/a/A/g" filename
Run Code Online (Sandbox Code Playgroud)

我试过(我现在认为帖子的其余部分是垃圾,因为shell命令执行命令行扩展 - 不是我想要的!)上面的问题仍然存在!

APP = $(shell perl -pi -e "s/a/A/g" filename)
Run Code Online (Sandbox Code Playgroud)

有和没有以下行

EXE = $(APP)
Run Code Online (Sandbox Code Playgroud)

我总是得到以下错误

make: APP: Command not found
Run Code Online (Sandbox Code Playgroud)

我假设它来自启动APP的行

谢谢

Gre*_*con 4

如果你想运行 perl 作为目标操作的一部分,你可以使用

$ cat 生成文件
全部:
        回声 abc | perl -pe 's/a/A/g'
$ 制作
回声 abc | perl -pe 's/a/A/g'
ABC

(请注意,前面有一个 TAB 字符echo。)

Perl 的-i选项是就地编辑文件,但这会造成混乱make(除非您正在编写一个虚假目标)。更典型的模式是从源头制定目标。例如:

$ cat 生成文件
全部: 巴尔

bAr: bar.in
        perl -pe 's/a/A/g' bar.in > bAr
$ 猫吧.​​in
酒吧
$ 制作
perl -pe 's/a/A/g' bar.in > bAr
$猫巴
酒吧

如果您让我们知道您想要做什么,我们将能够为您提供更好、更有帮助的答案。