あなたはおそらく持っていて@friends = ( ... )
、望んでい@friend_ids = (1, 3, 2)
ます。角括弧は、リストではなく配列参照に使用されます。次のような配列を作成できます。
#!/usr/bin/perl
use warnings;
use strict;
my @friends = ( {id => 1, last_name => 'Fo', first_name => 'fa' },
{id => 3, last_name => 'pa', first_name => 'pi' },
{id => 2, last_name => 'ma', first_name => 'mi' } );
my @friend_ids;
push @friend_ids, $_->{id} for @friends;
print "@friend_ids\n";
ただし、プッシュなしで同じことをより簡単に実現できます。
my @friend_ids = map $_->{id}, @friends;
重複を削除してキーをソートする必要がある場合は、次を使用できます。
my @friend_ids = sort {$a <=> $b} uniq map $_->{id}, @friends;
すべての ID が数字または数字のみの場合
my @friend_ids = sort uniq map $_->{id}, @friends;
一部の ID が数値でない場合 ( List::MoreUtilsuniq
からのもの)。