是否可以将数组添加到 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
我向记录添加了一个数组,但在访问数组元素时遇到问题。这是我的代码。
# 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