在Perl命令中使用斜杠

时间:2014-02-20 09:58:07

标签: perl replace find slash

在我想要运行的命令下面。

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您希望文本$XXTOP出现在输出中吗?在这种情况下逃避$ - {\$XXTOP}

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

Perl认为$XXTOP是Perl变量。

如果您想要扩展环境变量,请使用$ENV{$XXTOP}

答案 2 :(得分:0)

解决: 解决方案:

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