如何在perl
中創建一個數組數組,並使用適當的索引訪問每個成員數組。在perl中創建一個數組數組
目前我使用的一個維陣列,在每一次迭代和印刷更新它:
for ($i=0;$i<$size;$i++)
{
@words = @synsets[$i]->words;
print "@words\n"
}
但是,由於在下一步驟i要執行的進一步的操作,我想要訪問對應於每個陣列「同義詞集」。 有人能告訴我我該怎麼做嗎?
如何在perl
中創建一個數組數組,並使用適當的索引訪問每個成員數組。在perl中創建一個數組數組
目前我使用的一個維陣列,在每一次迭代和印刷更新它:
for ($i=0;$i<$size;$i++)
{
@words = @synsets[$i]->words;
print "@words\n"
}
但是,由於在下一步驟i要執行的進一步的操作,我想要訪問對應於每個陣列「同義詞集」。 有人能告訴我我該怎麼做嗎?
您需要列出對列表的引用,因爲Perl不允許列表中的列表。
@sentences =();
...
# in the loop:
push @sentences, \@words;
訪問單個詞,那麼你可以做到以下幾點:
$word = $sentences[0]->[0];
箭頭可以在這種情況下,雖然可以省略。
嘗試:
for my $synset (@synsets){
my @words = @$synset;
print "@words\n";
}
這裏有一個小的自包含的文件證明的基本知識。編輯適合:-)
Data::Dumper
幫助可視化數據結構 - 一個偉大的學習工具。
[]
充當"anonymous array constructor"。您可以通過perldoc perlref
瞭解更多信息(或按照上一個鏈接進行操作)。有時你必須解釋給別人之前,你甚至可以有點相信你自己的理解,所以我;-)
use 5.10.0 ;
use Data::Dump;
use strict;
use warnings;
my @AoA ;
#my $file = "testdata.txt";
#open my ($fh), "<", "$file" or die "$!";
#while (<$fh>) {
while (<DATA>) {
my @line = split ;
push @AoA, [@line] ;
}
say for @AoA; # shows array references
say @{$AoA[0]}[0] ; # dereference an inner element
foreach my $i (0..$#AoA)
{
say "@{$AoA[$i]}[2..4]" ; # prints columns 3-5
}
dd (@AoA) ; # dump the data structure we created ... just to look at it.
__DATA__
1 2 3 0 8 8
4 5 6 0 7 8
7 8 9 0 6 7
我聲稱沒有權限使用它,但是我找到了引用和匿名數據限制(散列和數組)非常有用我現在不知道何時*不*使用它們。他們甚至在我編寫[一個這樣的內襯]時就開始出現(http://stackoverflow.com/a/17643714/2019415)。有很多好的指南可以在perl中使用引用([和SO討論這個例子](http://stackoverflow.com/q/17414364/2019415)) - 經驗和熟悉似乎是決定何時和怎麼做。 –
要給你可以在Perl更地道寫C風格的'for'環路'foreach my $ i(0.. $ size -1)'這可以更容易閱讀。 (而不是'$ size-1',你可以使用'$#synsets'來給出@synsets中最後一項的索引) – plusplus