Как я могу разрешить этот случай «бесполезного использования переменной в пустом контексте»?

StackOverflow https://stackoverflow.com/questions/2342143

Вопрос

Как я могу разрешить этот случай «Бесполезного использования переменной в пустом контексте»?

Например:

  my $err = $soap_response->code, " ", $soap_response->string, "\n";
  return $err;

Я получаю предупреждения типа «Бесполезное использование переменной в пустом контексте»?Почему?Как я могу решить эту проблему?

Это было полезно?

Решение

Если вы хотите объединить аргументы, используйте "." оператор или join:

my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";

Далее, почему Perl выдает предупреждения.

Вы присваиваете скалярную переменную $err, а правая часть присваивания оценивается в скалярном контексте.

Двоичный "," — оператор запятая.В скалярном контексте он оценивает свой левый аргумент в контексте void, отбрасывает это значение, затем оценивает свой правый аргумент в скалярном контексте и возвращает это значение.

Оценивать переменную или константу и выбрасывать это значение бесполезно.И Perl предупреждает вас об этом.

К вашему сведению:Другая возможная проблема с вашим кодом:

my $err = $soap_response->code, " ", $soap_response->string, "\n";

Назначение имеет более высокий приоритет, поэтому:

(my $err = $soap_response->code), " ", $soap_response->string, "\n";

Видеть Операторы Perl и приоритет и Оператор запятая Чтобы получить больше информации.

Другие советы

Я думаю, вы хотели объединить фрагменты строки, чтобы сформировать полное сообщение об ошибке, поэтому вам придется использовать точку вместо запятой:

my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join(' ', $soap_response->code, $soap_response->string) . "\n";

или, лучше, ИМО:

return sprintf "%s %s\n", $soap_response->code, $soap_response->string;

Видеть perldoc -f присоединиться и perldoc -f спринтф Перлдок.

По поводу предупреждения см. Перлдок и это примечание об операторе запятой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top