как добавить двойную кавычку к строке в Perl

#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,
Пол