Perl 使用curl命令执行URL中的转义双引号

Perl 使用curl命令执行URL中的转义双引号,perl,curl,Perl,Curl,我将使用curl my $workItemCommentorURL = "://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId="$id"&oslc_cm.properties=dc:title" 我得到的错误是: Scalar found where operator expected at ./clone.pl line 90, near ""://xyz.com/jazz/oslc/users.json?oslc_

我将使用
curl

my $workItemCommentorURL = "://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId="$id"&oslc_cm.properties=dc:title"
我得到的错误是:

Scalar found where operator expected at ./clone.pl line 90, near ""://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId="$id"
    (Missing operator before $id?)
String found where operator expected at ./clone.pl line 90, near "$id"&oslc_cm.properties=dc:title""
尝试使用以下选项转义双引号:

"://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId=\"&id\"&oslc_cm.properties=dc:title"
"https://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:\"userId=" .$id. "\"&oslc_cm.properties=dc:title"
使用此选项,您可以获得结果,但仍会收到警告消息,如下所示:

sh: oslc_cm.properties=dc:title: command not found
如何在URL中转义引号以获得结果而不发出警告
sh:oslc_cm.properties=dc:title:command not found

我的代码是:

my $workItemCommentorURL = "https://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId=\"$id\"&oslc_cm.
my $result = qx(curl -s -D - -k  -b ~/.jazzcookies -o commentor.json -H \"Accept: application/x-oslc-cm-changerequest+json\" $workItemCommentorURL);

如果你不想插值变量。使用单引号:

my $workItemCommentorURL = '://xyz.com/jazz/oslc/users.json?oslc_cm.query=rtc_cm:userId="$id"&oslc_cm.properties=dc:title';
my $result = qx(curl -s -D - -k  -b ~/.jazzcookies -o commentor.json -H 'Accept: application/x-oslc-cm-changerequest+json' '$workItemCommentorURL');
如果确实需要插值,则使用替代形式:


您从
sh
收到的消息是由url中的
&
引起的。需要为shell转义/引用url。否则,shell将
&
解释为特殊字符

试试这个(注意单引号):

my $result = qx(curl -s -D - -k  -b ~/.jazzcookies -o commentor.json -H 'Accept: application/x-oslc-cm-changerequest+json' '$workItemCommentorURL');