是否可以在perl中为记录添加数组?

时间:2015-01-08 08:00:18

标签: 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";

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

2 个答案:

答案 0 :(得分:6)

你必须参考数组,

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

否则数组将变为扁平化列表

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

您可能还想查看perldoc perlreftut

答案 1 :(得分:0)

你可以像这样访问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
相关问题