[英]How to access an element in a Perl array from a reference to an array of references
我有以下Perl代碼:
package CustomerCredit;
#!/usr/local/bin/perl
use 5.010;
use strict;
my $TransRef = @_; # This code comes from a sub within the package.
my ($Loop, $TransArrRef, $TransID);
for ($Loop = 0; $Loop < $$#TransRef; $Loop++)
{
$TransArrRef = $$TransRef[$Loop]; # Gets a ref to an array.
$TransID = $$TransArrRef[0]; # Try to get the first value in the array.
# The above line generates a compile time syntax error.
...
}
$ TransRef是對數組引用數組的引用。 我正在嘗試處理$ TransRef指向的數組中的每個元素。 $ TransArrRef應獲取對數組的引用。 我想將該數組中的第一個值分配給$ TransID。 但是,此語句會生成編譯語法錯誤。
我必須做錯事,但無法弄清楚它是什么。 有人可以幫忙嗎?
語法錯誤來自$$#TransRef
,它應該是$#$TransRef
。 通過錯放#
你意外地評論了剩余的線路離開:
for ($Loop = 0; $Loop <= $$
{
$TransArrRef = $$TransRef[$Loop];
...
}
$$
是strict
因為它為您提供進程ID,讓編譯器進一步失敗。
此外, $#$TransRef
為您提供數組中的最后一個元素,因此您需要<=
而不是<
。 或者使用這個Perl樣式循環:
for my $loop (0 .. $#$TransRef) {
$TransID = $TransRef->[$loop]->[0];
# ...
}
my $arrays_ref = [ [1,2], [3,4] ];
for my $array_ref (@$arrays_ref) {
printf "%s\n", $array_ref->[0];
}
你也可以使用foreach
:
my @array = ('val1', 'val2', 'val3') ;
my $array_ref = \@array ;
print "array size is $#{$array_ref} \n" ;
foreach $elem (@$array_ref) {
print "$elem \n"
}
輸出:
array size is 2
val1
val2
val3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.