Falls Sie die Argumente verketten möchten, verwenden die "."
Betreiber oder join
:
my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";
Weiter Deshalb Perl Sie Warnungen gibt.
Sie ordnen einer Skalarvariablen $err
zu, und die rechte Seite der Zuweisung wird im skalaren Kontext ausgewertet.
Binär ",
" ist der Komma-Operator. Im skalaren Kontext wertet es sein linkes Argument im void-Kontext aus, wirft diesen Wert weg, wertet dann sein rechtes Argument im skalaren Kontext aus und gibt diesen Wert zurück.
Das Auswerten einer Variablen oder einer Konstanten und das Wegwerfen dieses Werts ist nutzlos. Und Perl warnt dich davor.
FYI: Ein weiteres mögliches Problem mit Ihrem Code:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
Die Zuordnung hat eine höhere Priorität, so dass ist:
(my $err = $soap_response->code), " ", $soap_response->string, "\n";
Perl operators and precedence See und die Comma operator für weitere Informationen.
Große Antwort. Aber "das richtige Argument" ist ein wenig mehrdeutig. Es weist den falschen Wert zu und nicht den richtigen :).Versuchen Sie vielleicht, "am weitesten rechts" oder "endgültig" oder "zuletzt" oder so etwas. – daotoad
Ich würde diese Antwort wirklich besser finden, wenn sie die Erwähnung des Verkettungsoperators als "das ist, was Sie meinten" enthielt. – darch
Dies ist eine bessere Erklärung für das, was schief gelaufen ist, aber codaddict hat eine bessere Lösung. 'Join' ist hier einfach zu viel. Was er wirklich wollte, war der Verkettungsoperator '.'. – cjm