3

perl配列の配列を作成し、適切なインデックスを使用して各メンバー配列にアクセスするにはどうすればよいですか。

現在、私は一次元配列を使用しており、反復ごとに更新して印刷しています。

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

しかし、次のステップでさらに操作を実行したいので、各「synset」に対応する配列にアクセスしたいと考えています。誰かが私にそれを行う方法を教えてもらえますか?

4

3 に答える 3

1

以下は、基本を示すための小さな自己完結型ファイルです。合わせて編集してください:-)

Data::Dumperデータ構造の視覚化に役立ちます - 優れた学習ツールです。

「無名配列コンストラクター」[]として機能します。詳細については、(または前のリンクをたどってください) を参照してください。自分で理解していると確信する前に、誰かに何かを説明しなければならない場合もありますが、ご容赦ください ;-)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
于 2013-07-16T14:22:31.407 に答える
1

試す:

for my $synset ( @synsets ){
    my @words = @$synset;
    print "@words\n";
}
于 2013-07-16T13:38:24.260 に答える
0

Perl ではリスト内のリストを許可しないため、リストへの参照のリストを作成する必要があります。

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

個々の単語にアクセスするには、次のようにします。

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

ただし、この場合、矢印は省略できます。

于 2013-07-16T10:31:55.197 に答える