是否可以将数组添加到 perl 中的记录?

Is it possible to add an array to a record in perl?

我向记录添加了一个数组,但在访问数组元素时遇到问题。这是我的代码。

# Create and initialize an array    
@array = (1, 2, 3);

# Add it to a record
$rec = {
    field1 => 'foo',
    field2 => @array
};

我尝试打印数组的内容,但它不起作用。

print $rec->{field2}[0] . "\n";

我的问题是...将数组添加到记录然​​后访问数组元素的正确方法是什么?

你必须引用数组,

$rec = {
    field1 => 'foo',
    field2 => \@array
};

否则数组会被压平到列表中

$rec = {
    field1 => 'foo',
    field2 => 1,
    2, 3
};

您可能还想查看 perldoc perlreftut

您可以像这样访问 hashrefs 内部的 arraysrefs:

$rec->{field2}->[$i] 

其中 $i 是您要访问的元素的索引。

你好蒂姆

编辑:添加了完整的工作示例

#!/usr/bin/perl

use strict;
use warnings;

my $ref = {field1 => "test", field2 => [5,6,7,8,9]};

print $ref->{field2}->[0],"\n";
print $ref->{field2}->[1],"\n";
print $ref->{field2}->[2],"\n";
print $ref->{field2}->[3],"\n";
print $ref->{field2}->[4],"\n";

将输出:

5
6
7
8
9