- 论坛徽章:
- 0
|
如果你真的要這麼做
那一次讀檔可能會快一點
比方說- chdir "$DIR_PP1_ELSE" or die "cannot chdir to $DIR_PP1_ELSE:$!";
- my @pp1_else=();
- opendir(DIR_TMP,$DIR_PP1_ELSE) or die "error in opening dir $DIR_PP1_ELSE\n";
- @pp1_else=grep(/^\d\d\d\d\.0314.*/,readdir DIR_TMP);
- closedir DIR_TMP;
- ...
- ...
- open(FILE,$DF_LIST) or die "can not open file111,please check.($!)";
- while(<FILE>)
- {
- my @list_df=split /;/, $_;
- chdir "$DIR_PP1_ELSE" or die "cannot chdir to $DIR_PP1_ELSE:$!";
- my @pp1_else_tmp=@pp1_else;
-
- foreach(@pp1_else_tmp)
- {
- local $/;
- my $filename=$_;
- open(MYFILE,$_) or die "can not open file222,please check.($!)";
- $data=<MYFILE>;
- while($data=~/$list_df[0],.*?,$list_df[1]/g)
- {
- do something;
- }
- close(MYFILE);
- }
- }
- close(FILE);
复制代码 不過為什麼不先將所有的比對資料讀進來再做比對呢?
比方說- ...
- ...
- ...
- chdir "$DIR_PP1_ELSE" or die "cannot chdir to $DIR_PP1_ELSE:$!";
- my @pp1_else=();
- opendir(DIR_TMP,$DIR_PP1_ELSE) or die "error in opening dir $DIR_PP1_ELSE\n";
- @pp1_else=grep(/^\d\d\d\d\.0314.*/,readdir DIR_TMP);
- closedir DIR_TMP;
- foreach (@pp1_else_tmp)
- {
- my $filename=$_;
- open(MYFILE,$_) or die "can not open file222,please check.($!)";
- while(<MYFILE>)
- {
- my @list_pp1_else=split /,/, $_;
- push(@{$compare_file{$list_pp1_else[9].":".$list_pp1_else[11]}},$filename);
- }
- close(MYFILE);
- }
- ...
- ...
- open(FILE,$DF_LIST) or die "can not open file111,please check.($!)";
- while(<FILE>)
- {
- my @list_df=split /;/, $_;
- if($compare_file{$list_df[0].":".$list_df[1]})
- {
- chdir "$DIR_PP1_ELSE" or die "cannot chdir to $DIR_PP1_ELSE:$!";
- foreach(@{$compare_file{$list_df[0].":".$list_df[1]}})
- {
- do something;
- }
- }
- }
- close(FILE);
复制代码 |
|