【发布时间】:2013-11-27 19:00:13
【问题描述】:
我有以下脚本:
use strict;
use List::MoreUtils qw/uniq/;
use Data::Dumper;
my @x = (3,2);
my @y = (4,3);
print "unique results \n";
print Dumper([uniq(@x,@y)]);
print "sorted unique results\n";
print Dumper([sort uniq(@x,@y)]);
输出是
unique results
$VAR1 = [
3,
2,
4
];
sorted unique results
$VAR1 = [
2,
3,
3,
4
];
所以看起来 sort 不适用于 uniq。 我不明白为什么。
我用 -MO=Deparse 运行了 perl 脚本并得到了
use List::MoreUtils ('uniq');
use Data::Dumper;
use strict 'refs';
my(@x) = (3, 2);
my(@y) = (4, 3);
print "unique results \n";
print Dumper([uniq(@x, @y)]);
print "sorted unique results\n";
print Dumper([(sort uniq @x, @y)]);
我的解释是 perl 决定从 uniq(@x,@y) 中删除括号并使用 uniq 作为排序函数。
为什么 perl 决定这样做?
我怎样才能避免这些和类似的陷阱?
谢谢, 大卫
【问题讨论】:
标签: perl