如何在perl
中创建数组数组,并使用适当的索引访问每个成员数组。
目前我正在使用一维数组,在每次迭代时更新并打印:
for ($i=0;$i<$size;$i++)
{
@words = @synsets[$i]->words;
print "@words\n"
}
但是因为在下一步我想要执行进一步的操作,我想访问与每个“synset”对应的数组。 有人可以告诉我我该怎么做吗?
答案 0 :(得分:1)
尝试:
for my $synset ( @synsets ){
my @words = @$synset;
print "@words\n";
}
答案 1 :(得分: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
答案 2 :(得分:0)
您需要列出对列表的引用,因为Perl不允许列表中的列表。
@sentences = ();
...
# in the loop:
push @sentences, \@words;
要访问单个单词,您可以执行以下操作:
$word = $sentences[0]->[0];
但在这种情况下可以省略箭头。