Ответ 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 для получения дополнительной информации.