sub uinq { @_ = do { @$_{@_}=(); keys %$_ }; @_ } my @array = (1,1,3,3,2,3,5,7,5,2); %_ = ( f=>'oo', b=>'ar' ); print "@{[ uinq @array ]}\n"; print map "\t$_ => $_{$_}\n", keys %_;