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

foreach(@name){if($v==$line_number){print"$name[$j]\t$w\n";}$v=0;openPF,"<",$proordie... 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
展开
 我来答
百度网友d580670
2015-03-13 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:685万
展开全部
感觉你的意思是下面的
遍历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";
}
  }
追问
是这个意思,可为什么我的程序不可以呢
lucifer_001
2015-03-11 · TA获得超过684个赞
知道小有建树答主
回答量:414
采纳率:0%
帮助的人:410万
展开全部
报了什么错,$pro是什么
追问
$pro是个列表形式的文件,while中的print @name那一行报错,“ Use of uninitialized value in print at ../match.pl line 51,  line 178.”
追答
你可以看看文件第178行是什么内容,这个目前来看没有修改过@name,应该是不会变化的,要看程序上下文。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式