Подтвердить что ты не робот

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

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

Например:

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

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

4b9b3361

Ответ 1

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

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

Вот почему Perl дает вам предупреждения.

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

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

Оценка переменной или константы и выброс этого значения бесполезны. И perl предупреждает вас об этом.

FYI: Еще одна проблема с вашим кодом:

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

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

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

Смотрите Perl-операторы и приоритет и Comma operator для получения дополнительной информации.

Ответ 2

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

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