新手求助
请各位大神帮忙看看这个代码的问题。
目的:有两个各为三列字符串的文件a与文件b,a与b的第一列与第三列一一对应,只是排序不同,想让文件b按文件a的顺序重新排序输出为文件c。
文件a与b节选如下:
文件a:
sa0 UT N3875
sa1 DS N3875
sa1 DS U531/ZN
sa1 DS N1
sa1 DS N3
sa0 DS N1971
sa1 DS N1971
sa1 DS U530/A1
sa1 DS N799
. . .
. . .
. . .
文件b:
sa0 NC N1028
sa1 NC N1028
sa0 NC N1277
sa1 NC N1277
sa0 NC N1726
sa1 NC N1726
sa0 NC N1816
sa1 NC N1816
sa0 NC N1817
sa1 NC N1817
sa0 NC N1818
sa1 NC N1818
. . .
. . .
. . .
我的代码如下所示:
#!/usr/bin/perl
use 5.010;
use strict;
use warnings;
my $R1='c2670_fault.v';
my $R2='c2670_external_fault.v';
my $W='c2670_external_resort_fault.v';
my $line=0;
my @internal;
my @column_one;
my @column_three;
my @external;
#####得到第一列与第三列数据#####
if(!open READ,'<',$R1)
{
die "can't read the file1:$!";
}
while(<READ>)
{
chomp;
push (@internal,$_);
@internal=split;
push @column_one,"$internal[0]\n";
push @column_three,"$internal[2]\n";
}
close READ;
#####重新排序并输出#####
if(!open READ,'<',$R2)
{
die "can't read the file2:$!";
}
if(!open WRITE,'>',$W)
{
die "can't write the file:$!";
}
while(<READ>)
{
chomp;
if (/$column_one[$line].*$column_three[$line]/)
{
push @external,$_;
$line++;
}
print WRITE "@external\n";
}
close READ;
close WRITE;
这样输出不了,我想知道问题出在了哪里。
谢谢大神指导。
由于分数不多,先给50分了,谢谢。