[英]run perl -e from inside perl script in windows
我需要从Windows中的Perl脚本中运行以下命令。 代码不能比这更简单:
#! C:\Perl\bin\perl
perl -e "print qq(Hello)";
我将此文件保存为test.pl
我在Windows中打开命令提示符并从c:\\Per\\bin
目录运行以下命令。 当我以perl test.pl
运行它时,我得到以下结果:
C:\Perl\bin>perl test.pl
syntax error at test.pl line 3, near ""perl -e "print"
Execution of test.pl aborted due to compilation errors.
我怎样才能解决这个问题? 如果我只是从命令提示符运行perl -e
(即不在文件中),它的效果很好。
test.pl
文件应包含:
print qq(Hello);
要从Perl程序运行另一个程序,请使用具有良好功能的system
运算符来绕过命令shell的参数解析。
如果LIST中有多个参数,或者LIST是具有多个值的数组,则使用列表其余部分给出的参数启动列表的第一个元素给出的程序。 如果只有一个标量参数,则检查参数是否为shell元字符,如果有,则将整个参数传递给系统的命令shell进行解析...
例如:
#! perl
system("perl", "-le", "print qq(Hello)") == 0
or warn "$0: perl exited " . ($? >> 8);
请记住, system
运行命令,其输出将转至标准输出。 如果要捕获输出,请执行以下操作
open my $fh, "-|", "perl", "-le", "print qq(Hello)"
or die "$0: could not start perl: $!";
while (<$fh>) {
print "got: $_";
}
close $fh or warn "$0: close: $!";
与system
,打开指定为多元素列表的命令会绕过shell。
我不知道为什么你需要它但是:
#!C:\Perl\bin\perl
`perl -e "print qq(Hello)"`;
为什么不使用eval ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.