jsnjzlw 发表于 2018-9-1 06:29:37

Perl不重复的文件行输出

  在日常的文本处理中,有时候要输出唯一的行,这种工作有多种方法实现...
  以下是一种:
  my %hash;
  while () {
  chomp;
  if (defined $hash{$_}) {
  $hash{$_} = undef;    #重复?
  next;
  }
  $hash{$_} = [$_, $.];
  }
  my @uniq = grep defined, values %hash;         #过滤到重复的
  @uniq = sort {$a->$b->} @uniq;    #按保存的顺序排序
  say $_-> for @uniq
  这是来自CU 的一个代码,比较的简单,故贴在这里,供观赏。
  还有一例:
  my @x=(1,2,3,2,1,4);
  my %hash;
  $hash{$_}++ for @x;
  for (@x) {
  print if $hash{$_} < 2;
  }

页: [1]
查看完整版本: Perl不重复的文件行输出