+ -
当前位置:首页 → 问答吧 → perl如何找出数组内出现2次的数据项

perl如何找出数组内出现2次的数据项

时间:2011-07-16

来源:互联网

$a=(AM,AT,ATM,MM,NN,AN,ATM,MM)

用什么程序得到, $suba=(ATM,MM)呢,要求必须简单,不超过5行代码,谢谢大家

作者: guoshicheng2005   发布时间: 2011-07-16

拉板凳围观高手,写个垃圾版的
  1. #!/usr/bin/perl
  2. my @a=qw(AM AT ATM MM NN AN ATM MM);
  3. foreach(@a){$b{$_}=0;}
  4. foreach(@a){if(defined $b{$_}){$b{$_}++;}}
  5. foreach(keys %b){if ($b{$_} == 2){print "$_\n";} }
复制代码

作者: chenhao392   发布时间: 2011-07-16

回复 guoshicheng2005
  1. perl -le '@a=(AM,AT,ATM,MM,NN,AN,ATM,MM);@suba= grep /./, map {if (++$count{$_}==2){$_} } @a;print join ",", @suba'
  2. ATM,MM
复制代码

作者: yinyuemi   发布时间: 2011-07-16