[英]How the behavior is when assign an array to a scalar in perl?
我的代碼是
my $r = ['111','222','aaa','bbb'];
print $r;
my $s = ('111','222','aaa','bbb');
print $s;
我能理解的第一張紙,$ r將是一個參考,並且印刷給我類似“ ARRAY(0x44444444)”的字樣。
但是我不明白為什么第二個示例print $ s給我最后一個元素bbb,為什么?
逗號操作符的功能,
取決於上下文。 有列表上下文和標量上下文要考慮。
在列表上下文中,逗號運算符將列表中的項目分開。 如果左側是數組或用括號括起來,則賦值會在右側強加列表上下文:
my ($s) = (1, 2, 3); #=> $s = 1, rest discarded
(my $s) = (1, 2, 3); # the same
my @arr = (1, 2, 3); #=> @arr = (1, 2, 3)
在標量環境中,Perl希望我們提供一個單一的價值。 然后,逗號運算符的工作方式就像在C或其他語言中一樣:對所有表達式求值並丟棄它們的值。 僅保留最后一個值:
my $s = (1, 2, 3); #=> $s = 3, previous items discarded
另請參見: perldoc perlop
的逗號運算符
請注意,括號(...)
不會創建數組。 它們僅用於控制優先級。 在$s = (1, 2, 3)
中需要數組,因為$s = 1, 2, 3
將被解析為($s = 1), 2, 3
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.