我的代码如下:
$id = "PROD121213123";
我将它传递给一个函数并将其添加到它
"\"$wi_id\""
其中$ wi_id看起来像my $wi_id = $_
"\"$wi_id\""
之后的值看起来像我在Eclipse调试器中检查的“PROD121213123”(使用EPIC)
我从Perl调用curl.exe,看起来这个“”在执行过程中被省略了。如何对字符串使用“”并仍使用CURL执行?
答案 0 :(得分:1)
听起来你做的相当于
my $id = "\"PROD121213123\""; # String <<"PROD121213123">>
system "curl.exe ... $id ..."; # curl sees <<PROD121213123>>
这是因为引号对“shell”有特殊意义。命令行解析在Windows中有点混乱(与Perl无关),因此您甚至可能无法将双引号传递给curl
。我尝试使用system
的多个arg版本。
答案 1 :(得分:-1)
您正在尝试将引号字符串传递给通过shell调用的命令。为了帮助你,你需要转义引号以隐藏shell:
my $id = q(\"PRD121212\");
system qq(curl.exe ... $id ...);
HTH, 保罗