在日常的文本處理中,有時候要輸出唯一的行,這種工作有多種方法實現...
以下是一種:
my %hash;
while (<>) {
chomp;
if (defined $hash{$_}) {
$hash{$_} = undef; #重複?
next;
}
$hash{$_} = [$_, $.];
}
my @uniq = grep defined, values %hash; #過濾到重複的
@uniq = sort {$a->[1] <=> $b->[1]} @uniq; #按保存的順序排序
say $_->[0] for @uniq
這是來自CU 的一個代碼,比較的簡單,故貼在這裏,供觀賞。
還有一例:
my @x=(1,2,3,2,1,4);
my %hash;
$hash{$_}++ for @x;
for (@x) {
print if $hash{$_} < 2;
}