作者abliou (下一个未来)
看板Perl
标题Re: [问题] 一次读两个档以上
时间Fri Apr 18 13:40:33 2014
简单的作法 把你一行移动一下 读档指标归零就好
※ 引述《yalent ( 心只有你 )》之铭言:
: 小弟又有个问题想请教各位朋友
: A档案内容是
: 10013240 台湾省屏东县满州乡
: 10013280 台湾省屏东县玛家乡
: 10014070 台湾省台东县东河乡
: 10014140 台湾省台东县金峰乡
: 10015060 台湾省花莲县寿丰乡
: ..
: B档案内容是
: 10014070
: 10015060
: 10015060
: 10013240
: ...
: 我想一次读两个档,当B的内容比对到与A前面的数字相同时,
: 将B档案的内容取代成A档案後面的字串
: 所以B档案会变成如下
: 台湾省台东县东河乡
: 台湾省花莲县寿丰乡
: 台湾省花莲县寿丰乡
: 台湾省屏东县满州乡
: ....
: 我的写法如下:
: ---
: my $ina = "A.txt";
: my $inb = "B.txt";
: #open (FILEa , "<". $ina);
#^^^^^^^^^^^^^^^^^^^^^^^^^移动这一行
: open (FILEb , "<". $inb);
: while(<FILEb>){
: if ($_ =~ /(\d+)/){
: $n1=$1;
open (FILEa , "<". $ina); # 到这边来
: while(<FILEa>){
: chomp;
: if ($_ =~ /(\d+)\s+(\S+)/){
: $m1=$1;
: $m2=$2;
: if ($n1 == $m1){
: print "$m2\n";
: }
: }
: }
: }
: }
: ---
: 不过看起来有问题,几乎都没有比对到,
: 请问我的写法哪里有问题吗?
: 感谢大家~
当然有比较正统的写法 但我想这样写应该也可以跑
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.195.44.131
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Perl/M.1397799637.A.C51.html
1F:推 cutekid:也可不移动,在 while(<FILEa>) 上面加: seek FILEa,0,0; 04/18 14:31
2F:推 yalent:太感谢了,谢谢两位~ 04/18 15:20