perl 可以循环中重复打开同一个文件多次吗?

foreach(@name){
if($v==$line_number){
print "$name[$j]\t$w\n";
}
$v=0;
open PF,"<",$pro or die "can't read $pro:$!\n";
while(<IN>){
chomp;
@info=split/\t/,$_;
print @name;
if($info[0] eq $name[$j]){
print "@info\n";
last;
}
$v++;
}
close PF;
$j++;
}
@name是已经存好的数组,可是在循环中输出时却总是报错,而且@name数组中的值也莫名其妙的变了,为什么?
while(<IN>)是笔误,应该是PF

感觉你的意思是下面的
遍历name数组,找到文件中匹配到第一列和名字一样的,
打印该行的内容和行号

for $j(0..@name){
$v=0;
open PF,"<",$pro or die "can't read $pro:$!\n";
while(<PF>){
         chomp;
          @info=split/\t/,$_;
          if($info[0] eq $name[$j]){
              print "@info\n";
              last;
          }
          $v++;
      }
close PF;
if($v == $line_number){
        print "$name[$j]\t$v\n";
}
  }追问

是这个意思,可为什么我的程序不可以呢

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-03-11
报了什么错,$pro是什么追问

$pro是个列表形式的文件,while中的print @name那一行报错,“ Use of uninitialized value in print at ../match.pl line 51, line 178.”

追答

你可以看看文件第178行是什么内容,这个目前来看没有修改过@name,应该是不会变化的,要看程序上下文。

相似回答