這裏是我面臨的形勢......如何確定數組引用中元素的數量?
$perl_scalar = decode_json(encode ('utf8',$line));
decode_json返回引用。我相信這是一個數組。我如何找到$ perl_scalar的大小?根據Perl文檔,數組是使用@name引用的。有沒有解決方法?這個引用由散列數組組成。我想得到一些哈希值。
如果我做長度($ perl_scalar),我得到一個數字,它不匹配數組中的元素數量。
這裏是我面臨的形勢......如何確定數組引用中元素的數量?
$perl_scalar = decode_json(encode ('utf8',$line));
decode_json返回引用。我相信這是一個數組。我如何找到$ perl_scalar的大小?根據Perl文檔,數組是使用@name引用的。有沒有解決方法?這個引用由散列數組組成。我想得到一些哈希值。
如果我做長度($ perl_scalar),我得到一個數字,它不匹配數組中的元素數量。
這將是:
scalar(@{$perl_scalar});
您可以從perlreftut獲得更多的信息。
您可以參考陣列複製到一個正常的是這樣的:
my @array = @{$perl_scalar};
但在此之前,你應該檢查$perl_scalar
是否真的引用一個數組,ref
:
if (ref($perl_scalar) eq "ARRAY") {
my @array = @{$perl_scalar};
# ...
}
更新
length
方法不能用於計算數組的長度,它用於獲取字符串的長度。
你可以看到整個結構與數據::自卸車:
use Data::Dumper;
print Dumper $perl_scalar;
數據::翻車機是安裝在Perl的標準模塊。有關所有標準語用和模塊的完整列表,請參閱perldoc perlmodlib
。
$num_of_hashes = @{$perl_scalar};
由於您將分配給標量,因此解除引用的數組將在標量上下文中評估爲元素數量。
如果您需要強制標量上下文,請按照KARASZI的說法使用scalar
函數。
您也可以使用數組的最後一個索引來計算數組中的元素數。
my $length = $#{$perl_scalar} + 1;