繁体   English   中英

从windows中的perl脚本运行perl -e

[英]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 -e …运行perl代码? 只需将实际代码放入程序中即可。

另一方面,如果要从程序中运行外部命令,则答案取决于您要对程序的输入/输出和/或退出代码执行的操作。 看看系统qxopen

要从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.

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