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