繁体   English   中英

从Perl脚本调用Perl脚本

[英]Calling perl script from a perl script

我想从bash shell中具有大参数列表的perl脚本中调用perl脚本。 参数包含特殊字符,例如\\*()等。每个特殊字符都由单个转义字符\\引导。

但是,当我从第一个perl脚本调用第二个perl脚本(然后调用一个shell脚本)时,转义字符会被评估,特殊字符会暴露在shell中,因此会出现语法错误。

因此,基本上,我想从第一个perl脚本调用第二个perl脚本时防止转义字符的求值,而当我从第二个perl脚本调用shell脚本时应该求值。

例如。 输入到第一个perl'MonitorAdmin'脚本是:

MonitorAdmin -reversefilter -container="LogServerContainer" -filepath="/home/esg2/YogeshTemp/VSDEFAULT/logs" -filename="System.log" -pattern=".*\t.*\t(DEBUG)\t.*\t.*\t.*\t(SecurityService)\t.*\t.*\t.*\t.*\t.*" -linecount="5001" -targetfile="

如果您将包含多个元素的列表传递给Perl,则Perl的execsystem命令将不会调用shell,但是每个list元素将成为一个单独的参数,即空格不会分隔参数。 我想这即使在执行shell脚本时也能很好地工作,因为您没有使用-c选项调用-c

有两种形式的system ,一个执行shell命令( system($shell_cmd)以及一个启动一个程序( system($program, @args) 尽我们所能告知,您似乎使用了错误的信息。 所有你需要的是

system('MonitorAdmin2', @ARGV)

没有外壳可以“误解”字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM