Trong trường hợp bạn muốn nối các đối số, sử dụng các "."
nhà điều hành hoặc join
:
my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";
Tiếp theo là lý do tại sao Perl cung cấp cho bạn những cảnh báo.
Bạn đang gán cho biến vô hướng $err
và phía bên phải của bài tập được đánh giá trong ngữ cảnh vô hướng.
Nhị phân ",
" là toán tử dấu phẩy. Trong ngữ cảnh vô hướng, nó đánh giá đối số bên trái của nó trong bối cảnh void, ném giá trị đó đi, sau đó đánh giá đối số đúng của nó trong ngữ cảnh vô hướng và trả về giá trị đó.
Đánh giá biến hoặc hằng số và ném giá trị đó đi là vô dụng. Và perl cảnh báo bạn về điều này.
FYI: Một vấn đề có thể với mã của bạn:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
Việc chuyển nhượng có độ ưu tiên cao cho nên đó là:
(my $err = $soap_response->code), " ", $soap_response->string, "\n";
Xem Perl operators and precedence và Comma operator để biết thêm thông tin.
Nguồn
2010-02-26 14:21:31
Câu trả lời hay. Nhưng 'đối số đúng' là một chút mơ hồ. Nó gán giá trị sai và không đúng giá trị :).Hãy thử, có lẽ, 'đúng nhất' hoặc 'cuối cùng' hoặc 'cuối cùng' hoặc một cái gì đó. – daotoad
Tôi thực sự thích câu trả lời này tốt hơn nếu nó bao gồm đề cập đến các nhà điều hành nối như "đây là những gì bạn có nghĩa là". – darch
Đây là giải thích tốt hơn về những gì đã xảy ra, nhưng codaddict có một giải pháp tốt hơn. 'join' chỉ là quá mức cần thiết ở đây. Điều anh ta thực sự muốn là toán tử nối, '.'. – cjm