several ways
eg: my @uniq = keys %{{ map { $_ => 1 } @list }};
or
my %seen;
my @uniqed = grep !$seen{$_}++, @list;
显然这里有些值得注意的细节:
1,undef值被++操作符运算时自动处于数值环境而变成零
2,虽然map返回的是一个hash,但不能传递给keys作为参数
我发现第二个错了
map返回的不是hash
虽然在perldoc -f map里面有 %hash = map {get_key_for_hash($_)=> $_} @array
但这里的hash环境还是由%hash提供而不是map搞出来的

没有评论:
发表评论