#perl
#perl
Вопрос:
мой код выглядит следующим образом:
$id = "PROD121213123";
Я передаю это в функцию и добавляю это к ней
""$wi_id""
где $wi_id выглядит так my $wi_id = $_
После ""$wi_id""
того, как значение выглядит как «PROD121213123», которое я проверил в отладчике Eclipse (используя EPIC)
Я звоню curl.exe из Perl, и это выглядит так, как будто это «» опущено во время выполнения. Как я могу добавить «» к строке и все равно выполнить с помощью CURL?
Комментарии:
1. Пожалуйста, опубликуйте некоторый код, объяснение сбивает с толку.
2. Что именно заставляет вас думать, что кавычки опущены во время выполнения?
3. У меня мурашки по коже, когда я пытаюсь подумать, что может пытаться сделать OP.
4. я хотел добавить двойные кавычки для значения $wi_id
5. используйте LWP вместо
system "curl..."
; проблема решена.
Ответ №1:
Похоже, вы делаете эквивалент
my $id = ""PROD121213123""; # String <<"PROD121213123">>
system "curl.exe ... $id ..."; # curl sees <<PROD121213123>>
Это потому, что кавычки имеют особое значение для «оболочки». Синтаксический анализ командной строки в Windows немного запутан (ничего общего с Perl), поэтому вы, возможно, не сможете даже передать двойные кавычки curl
. Я бы попробовал использовать версию с несколькими аргументами system
.
Комментарии:
1. мой URL-адрес должен выглядеть следующим образом:
http://localhost/olsc/context/workitems?oslc_cm=id="PROD121213123"
Я пытаюсь создать URL-адрес в коде perl вместе с"PROD121213123"
2. @Karthik Krishnan, это недопустимый URL.
"
недопустимо неэкранированное в URL-адресах. Кроме того, значение=
in действительно должно быть экранировано. Я бы использовалuse URI; my $url = URI->new('http://localhost/olsc/context/workitems'); $url->query_form(oslc_cm => qq{id="$id"});
, если код, обрабатывающий URL, не содержит ошибок для обработки правильного URL.3.…
system qq{curl.exe ... "$url" ...};
4. Я использую обратные ссылки и систему.
5. @Karthik Krishnan, что это значит?
Ответ №2:
Вы пытаетесь передать строку в кавычках команде, которая вызывается через оболочку. Для этого вам нужно экранировать кавычки, чтобы скрыть их для оболочки:
my $id = q("PRD121212");
system qq(curl.exe ... $id ...);
HTH,
Пол