2014-02-20 165 views
0

在我想运行的命令下面。在Perl中使用斜杠命令

perl -pi -w -e 's//apps/LIVE/appl/xx/11.5.0//$XXTOP//g;' prog.txt 

在这里,源代码和替换都在其中有斜线。

如何处理?

- 更新

我试着用花括号和波浪有人提出。

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{$XXTOP}g;' prog.txt 

在这种情况下,美元符号给人的问题,否则它工作正常..

Error: 
Name "main::XXTOP" used only once: possible typo at -e line 1. 
Use of uninitialized value at -e line 1, <> chunk 1. 
Use of uninitialized value at -e line 1, <> chunk 2. 

回答

3

使用另一个分隔符:

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$XXTOP/~g;' prog.txt 

你可以访问环境变量直通%ENV,像:

perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$ENV{XXTOP}/~g;' prog.txt 
+0

这比我的可读性更强。 +1。 – slayedbylucifer

+0

错误: 名称“main :: XXTOP”仅用于一次:可能的错字位于-e行1. 在-e行1,<>块1中使用未初始化的值。 在-e行1处使用未初始化的值, <> chunk 2. – user1809047

+0

@ user1809047:看我的编辑,是你想要的吗? – Toto

0

是否希望文本$XXTOP出现在输出中。在这种情况下逃脱$ - {\$XXTOP}

perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;' prog.txt 

Perl是认为$XXTOP是一个Perl变量。

,如果你想扩展的环境变量,使用$ENV{$XXTOP}

0

解决: 解决方案:

的perl -pi -e -w的{应用/ LIVE /申请/ XX/11.5。 0} {\ $ XXTOP}克;” prog.txt