En caso de que quiera para concatenar los argumentos, el uso el operador "."
o join
:
my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";
siguiente es la razón por Perl le da advertencias.
Está asignando a una variable escalar $err
, y el lado derecho de la asignación se evalúa en contexto escalar.
binario ",
" es el operador coma. En el contexto escalar, evalúa su argumento de la izquierda en el contexto vacío, descarta ese valor, luego evalúa su argumento correcto en contexto escalar y devuelve ese valor.
Evaluación de una variable o una constante y tirar que el valor de distancia es inútil. Y Perl te advierte sobre esto.
FYI: Otro posible problema con su código:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
La asignación tiene mayor preferencia por lo que es:
(my $err = $soap_response->code), " ", $soap_response->string, "\n";
Ver Perl operators and precedence y la Comma operator para más información.
Gran respuesta. Pero "el argumento correcto" es un poco ambiguo. Está asignando el valor incorrecto y no el correcto :).Pruebe, tal vez, 'más a la derecha' o 'final' o 'último' o algo así. – daotoad
Realmente me gustaría esta respuesta si incluyera mención del operador de concatenación como "esto es lo que quería decir". – darch
Esta es una mejor explicación de lo que salió mal, pero codaddict tiene una mejor solución. 'join' es exagerado aquí. Lo que realmente quería era el operador de concatenación, '.'. – cjm