perl二維陣列

2022-09-06 18:27:11 字數 2899 閱讀 7108

【**】出處:

7 切片

此處引用相當於c中的指標。

二維陣列第一列不儲存具體元素而是儲存指向該行一維陣列的引用。

my @aoa = (

[ "fred", "barney", "pebbles", "bambam", "dino", ],

[ "george", "jane", "elroy", "judy", ],

[ "homer", "bart", "marge", "maggie", ],

);

$ref_to_aoa = [

[ "fred", "barney", "pebbles", "bambam", "dino", ],

[ "george", "jane", "elroy", "judy", ],

[ "homer", "bart", "marge", "maggie", ],

];

$aoa[$i][$j]
因為第一列陣列裡面存放的是引用,所以還可以這樣訪問:

$aoa[$i]->[$j]
$ref_aoa->[$i][$j]
同理引用還可以這樣訪問:

$ref_aoa->[$i]->[$j]

my (@aoa, $ref_to_aoa);

sub print_aoa\n";

}print "\n";

}# assign to our array, an array of array references

@aoa = (

[ "fred", "barney", "pebbles", "bambam", "dino", ],

[ "george", "jane", "elroy", "judy", ],

[ "homer", "bart", "marge", "maggie", ],

);say $aoa[2][1];

$ref_to_aoa = [

[ "fred", "barney", "pebbles", "bambam", "dino", ],

[ "george", "jane", "elroy", "judy", ],

[ "homer", "bart", "marge", "maggie", ],

];print_aoa();

my @tmp = (1, 2, 3, 4);

push @aoa, [@tmp]; # 因為陣列aoa第一列需要的是引用,而@tmp是陣列,直接賦值會出錯。表示返回@tmp的引用,即把@tmp的引用push到@aoa最後一行,二維陣列行數加1.

print_aoa();

push @aoa, @tmp;

print_aoa();

覆蓋行

#$aoa[0] = @tmp;   #$aoa[0]是scalar型,而@tmp是list型,所以用預設把tmp的個數賦給$aoa[0],即$aoa[0]=4;

$aoa[0] = [@tmp]; #overwirte

print_aoa();

push @, "wilma", "betty";
省略@{}

use v5.14;   # needed for implicit deref of array refs by array ops

push $aoa[0], "wilma", "betty"; # 在5.14版本之前不能通過,因為以前規定push的第一引數必須為陣列。在新版本中當$aoa[0]中存在引用時可以通過,但無引用時不正確。

print_aoa();

my $aref = undef;

#push $aref, qw/some value/; # 出錯:not an array reference

my $aref = [@tmp];

push $aref, qw/some value/; # 正確,因為aref此時不是個空引用

print "$aref : @$aref\n";

6.1 運算子優先順序

$@*%&

6.2 訪問乙個

print $aoa[$i][$j];

print ref_$aoa->[$i]->[$j];

6.3 遍歷

for $aref ( @aoa )                #  $aref只是第一列裡面的引用,要想訪問整行必須加@,又$訪問級別比@高,所以()可以省略。

for my $i (0 .. $#aoa)";

}

for my $i (0 .. $#aoa))

}

要訪問幾行幾列元素。和matlab中訪問矩陣的方法差不多。

my @part = ();

my $x = 4;

for (my $y = 1; $y<4; $y++)

# 簡單寫法

@part = @[1..4];

my @newaoa = ();

for (my $startx= my $i = 1; $i<=5; $i++)

}#乙個迴圈簡單寫法

for (my $x = 1; $x<=5; $x++)[2 .. 4]];

}

sub splice_2d ]

)$x_l .. $x_h;

}@newaoa = splice_2d(\@aoa, 1=>5, 2=>4);

author: visaya fan 

date: 2011-10-29 15:00:34

html generated by org-mode 6.33x in emacs 23

perl 二維陣列

perl沒有真正的二維陣列,所謂的二維陣列其實是把一維陣列以引用的方式放到另外乙個一維陣列。二維陣列定義 my array1 1,2 3,4 45,9 66,5 使用表示匿名陣列 或者 my array2 qw this is a array my array3 another array my a...

Perl 二維陣列

7 切片 此處引用相當於c中的指標。二維陣列第一列不儲存具體元素而是儲存指向該行一維陣列的引用。my aoa fred barney pebbles bambam dino george jane elroy judy homer bart marge maggie ref to aoa fred ...

Perl 二維陣列教程

perl 文件中文化計畫 perl 二維陣列教程翻譯完成。code name perllol 運算元組的陣列 二維陣列 說明宣告和訪問陣列的陣列 建立乙個陣列的陣列 有時也可以叫 列表的列表 不過不太準確 真是再簡 單也不過了。它相當容易理解,並且本文中出現的每個例子都有可能在實際應用 中出現。陣列...