簡體   English   中英

標量上下文中的Perl數組

[英]Perl array in scalar context

我是Perl的新手。 我正在嘗試了解Perl上下文。 我有以下Perl代碼。

use strict;
use warnings;
use diagnostics;

my @even = [ 0, 2, 4, 6, 8 ];
my @odd = [ 1, 3, 5, 7, 9 ];
my $even1 = @even;
print "$even1\n";

當我執行代碼時,我得到以下輸出...

1

但是,正如我所讀到的,下面的標量上下文應該將數組中的元素數量放在標量變量中。

my $even1 = @even;

所以,這對我來說很奇怪。 而且,代碼內部會發生什么?

定義數組的正確語法是

my @even = ( 0, 2, 4, 6, 8 );
my @odd  = ( 1, 3, 5, 7, 9 );

當您使用方括號時,您實際上是在創建一個匿名數組的引用 (指針),並將引用存儲在@even@odd 引用是標量,所以@even@odd的長度是1。

有關引用的更多信息,請參閱Perl參考教程

通過在Perl中使用方括號,您將創建一個數組引用而不是實際的數組。 您可以閱讀手冊中的參考資料: perldoc perlreftut 用圓括號替換方括號,代碼將按預期執行:

my @even = ( 0, 2, 4, 6, 8 );
my @odd = ( 1, 3, 5, 7, 9 );
my $scalar = @even;
print "$scalar\n";

將打印

5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM