我知道下面的perl内衬非常简单,可以工作并且可以用全局替换A代替;但是如何在makefile中运行它?

perl -pi -e "s/a/A/g" filename

我已经尝试了(我现在认为该帖子的其余部分都是垃圾,因为shell命令会进行命令行扩展-不是我想要的!)上面的问题仍然存在!
APP = $(shell perl -pi -e "s/a/A/g" filename)

有无以下行
EXE = $(APP)

我总是收到以下错误
make: APP: Command not found

我认为它来自启动APP的行

谢谢

最佳答案

如果要将perl作为目标操作的一部分运行,则可以使用

$猫Makefile
全部:
回声abc | perl -pe's/a/A/g'
$使
回声abc | perl -pe's/a/A/g'
美国广播公司

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

Perl的-i选项用于就地编辑文件,但这会混淆make(除非您正在编写phony target)。一种更典型的模式是从源头确定目标。例如:

$猫Makefile
全部:bAr

bAr:bar.in
perl -pe's/a/A/g'bar.in> bAr
$ cat bar.in
酒吧
$使
perl -pe's/a/A/g'bar.in> bAr
$ cat bAr
酒吧

如果您让我们知道您要做什么,我们将为您提供更好,更有用的答案。

关于perl - 如何从Makefile运行Perl One衬纸?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2127256/

10-09 16:35
查看更多