Perl:更改二维数组中的元素

时间:2016-02-09 17:14:45

标签: arrays perl

如何在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 }
);

3 个答案:

答案 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 );