+ -
当前位置:首页 → 问答吧 → 又忘记了这个怎么处理

又忘记了这个怎么处理

时间:2010-11-11

来源:互联网

本帖最后由 heqidz 于 2010-11-11 15:57 编辑

文件1
1
2
3

文件2
1 aa
1 bb
1 cc
2 ii
2 pp
3 uu
3 ll

结果
1
   aa
   bb
   cc

2
  ii
  pp

3
  uu
  ll

俺写的哪里错了?
#!/usr/bin/perl

use strict;
use warnings;

my (%hash,@array) = ();

open A,"02.txt" or die "$!\n";

while (my $str = <A>) {
       chomp $str;
       my ($num) = $str =~ m{^(\d+)};
       unless (!$num) {push @array,$num;};
}
close A;

open B,"01.txt" or die "$!\n";
         
while (my $str = <B>) {
       chomp $str;
       my ($num,$val) = split /\s+/,$str;
       unless (!$num or !$val) {$hash{$num} = $val;};
}
            

foreach my $num (@array) {
        if (exists $hash{$num}) {
          print "$num\n";
         print "\t$hash{$num}\n";
        }

}

作者: heqidz   发布时间: 2010-11-11

  1.   unless (!$num or !$val) {
复制代码
旷世奇才才写得出这样的代码啊,我脑袋实在转不过来圈圈了

作者: zhlong8   发布时间: 2010-11-11

回复 zhlong8


    ??????这个怎么了

作者: heqidz   发布时间: 2010-11-11

回复 heqidz


    没什么,人老了逻辑关系搞不清楚了。unless 只推荐用在简单的情况下,而且里面最好不要用否定,还有那个 not or not 最好简化下 。总之我是看不下来了,还不如自己写个来的快

作者: zhlong8   发布时间: 2010-11-11

回复 zhlong8

那你帮我写个,我瞧瞧,我这个有点问题,谢了

作者: heqidz   发布时间: 2010-11-11