如何在perl中更改二维数组中的元素?
假设我有以下数组并想要更改项目的价格:
my @clothes = (
{ item => 'Jeans', colour => 'Blue', price => 50 },
{ item => 'Shawl', colour => 'Red', price => 30 },
{ item => 'Blazer', colour => 'Brown', price => 100 },
{ item => 'Suit', colour => 'Black', price => 40 },
{ item => 'Top', colour => 'White', price => 25 }
);
答案 0 :(得分:7)
你所拥有的是一系列哈希。更准确地说,你所拥有的是一系列对哈希的引用。这意味着
merge.ff
是对哈希的引用,所以
$clothes[3]
是该哈希的$clothes[3]->{price}
元素的值。索引之间可以省略price
,因此以下内容是等效的:
->
这意味着你想要
$clothes[3]{price}
如果您不知道所需元素的索引,则可以扫描该数组。请记住,数组的每个元素都是对其中一个哈希的引用。
$clothes[3]{price} = 45;
答案 1 :(得分:4)
你没有二维数组---你有一个hashrefs数组。如果要更改特定项的价格,则需要知道包含其所属哈希引用的数组索引。
$clothes[1]->{price} = 42;
对于您可以对哈希数组执行的其他操作,请参阅Arrays of Hashes的恰当名称perldsc部分。
答案 2 :(得分:0)
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @clothes =
(
{item => 'Jeans', colour => 'Blue', price => 50},
{item => 'Shawl', colour => 'Red', price => 30},
{item => 'Blazer', colour => 'Brown', price => 100},
{item => 'Suit', colour => 'Black', price => 40},
{item => 'Top', colour => 'White', price => 25}
);
for my $next_item ( @clothes ){
$next_item->{price} = 0.99
}
print Dumper( \@clothes );