ハッシュをネストした配列で、ハッシュの特定のキーを基に重複した値を除く
#!/usr/bin/env perl use strict; use warnings; use 5.014; use Data::Dumper; my @duplicated_hash = ( {url => 'http://www.yahoo.co.jp.', title => 'Yahoo! Japan'}, {url => 'http://www.yahoo.co.jp.', title => 'Yahoo! Japan'}, {url => 'http://www.yahoo.co.jp.', title => 'Yahoo! Japan'}, {url => 'http://www.google.com.', title => 'Google'}, {url => 'http://www.google.com.', title => 'Google'}, {url => 'http://www.facebook.com/', title => 'Facebook'}, ); my @unique_hashs = (); my %parsed_hash = (); foreach my $domain (@duplicated_hash) { unless ($parsed_hash{$domain->{url}}) { push @unique_hashs, {url => $domain->{url}, title => $domain->{title}}; $parsed_hash{$domain->{url}}++; } } print Dumper(@unique_hashs);
結果。
$VAR1 = { 'url' => 'http://www.yahoo.co.jp.', 'title' => 'Yahoo! Japan' }; $VAR2 = { 'url' => 'http://www.google.com.', 'title' => 'Google' }; $VAR3 = { 'url' => 'http://www.facebook.com/', 'title' => 'Facebook' };