2017-03-17 67 views

回答

4

它迫使分配的右操作數在列表環境進行評估。在你的例子中沒用(因爲10不關心上下文),但它在其他情況下很重要。

my @a = qw(a b c); 

my $count = @a;   # 3 
my ($first_val) = @a;  # a 

有關詳情,請參見Mini-Tutorial: Scalar vs List Assignment Operator

+0

現在很清楚..謝謝 –

1

這有幾個不同的用途。一個很常見的方法是在一行中聲明多個變量。

my ($a, $b, $c); 

你也可以用它來瓦爾分配到數組索引值

my ($a, $b, $c) = @letters 
1

除了現有的兩個答案,這也是值得注意的是,my是一個Perl關鍵字的極少數情況下在某些情況下需要括號,就像iffor一樣。

如果您想要同時聲明多個變量,則需要parens。

my $foo, $bar; # only declares $foo, will fail under strict if $bar is not there 
my ($foo, $bar); # works 

用括號使用它也是有用的,如果你想要一個函數分配給新變量的返回值,但你不關心其中的一些。

my (undef, $min, $hour) = localtime; 

在這個例子中與localtime,第一返回值被忽略。所有其他值($mday,$mon,$year,$wday,$yday,$isdst)也被忽略,因爲我們從未分配它們。

+0

@ikegami如果之前沒有聲明'$ bar',它在'use strict'下。它還會在'use warnings'下關於丟失的括號[拋出警告](http://perldoc.perl.org/perldiag.html#Parentheses-missing-around-%22%25s%22-list)。 – simbabque

+0

@ikegami查看更新。那應該會更好。我在5.20.1中得到了警告,並且它仍然在5.24.1的perldiag中 – simbabque

相關問題