2013-07-16 38 views
2

如何在perl中創建一個數組數組,並使用適當的索引訪問每個成員數組。在perl中創建一個數組數組

目前我使用的一個維陣列,在每一次迭代和印刷更新它:

for ($i=0;$i<$size;$i++) 
{ 
    @words = @synsets[$i]->words; 
    print "@words\n" 
} 

但是,由於在下一步驟i要執行的進一步的操作,我想要訪問對應於每個陣列「同義詞集」。 有人能告訴我我該怎麼做嗎?

+0

要給你可以在Perl更地道寫C風格的'for'環路'foreach my $ i(0.. $ size -1)'這可以更容易閱讀。 (而不是'$ size-1',你可以使用'$#synsets'來給出@synsets中最後一項的索引) – plusplus

回答

0

您需要列出對列表的引用,因爲Perl不允許列表中的列表。

@sentences =(); 
... 
    # in the loop: 
    push @sentences, \@words; 

訪問單個詞,那麼你可以做到以下幾點:

$word = $sentences[0]->[0]; 

箭頭可以在這種情況下,雖然可以省略。

1

嘗試:

for my $synset (@synsets){ 
    my @words = @$synset; 
    print "@words\n"; 
} 
1

這裏有一個小的自包含的文件證明的基本知識。編輯適合:-)

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 
+0

我聲稱沒有權限使用它,但是我找到了引用和匿名數據限制(散列和數組)非常有用我現在不知道何時*不*使用它們。他們甚至在我編寫[一個這樣的內襯]時就開始出現(http://stackoverflow.com/a/17643714/2019415)。有很多好的指南可以在perl中使用引用([和SO討論這個例子](http://stackoverflow.com/q/17414364/2019415)) - 經驗和熟悉似乎是決定何時和怎麼做。 –

相關問題