有关perl的去重问题

比如一个哈希,结构如下
$VAR1 = {
'11' => {
'mark' => '14656,13566-13570'
},
'21' => {
'mark' => '14656,13566-13570'
},
................
}
我现在想组成一个新的列表,里面的内容就是上面哈希中每一个元素的mark的值。但是需要过滤掉重复的mark。
求方法,多谢!

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;

my %a = (
'11' => {
'mark' => '14656,13566-13570'
},
'21' => {
'mark' => '14656,13566-13570'
},
'31' => {
'mark' => '12656,13566-13570'
},
'41' => {
'mark' => '12356,13566-13570'
},
);

my %count=();
my @b = grep {++$count{$a{$_}{mark}} < 2} keys %a; #将mark的value值作为%count的key,当遇到重复值时++, 最后过滤出%count的value小于2的,即非重复值。

for (@b){
print Dumper($a{$_});
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-14
my @mark = keys %{ { map {$_ => 1 } map { (values %{$_})[-1] } values %{$VAR1} } } ;

print "@mark\n" #14656,13566-13570'
相似回答