新手求助

elle_ape 2017-11-28 11:23:38
请各位大神帮忙看看这个代码的问题。
目的:有两个各为三列字符串的文件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分了,谢谢。
...全文
119 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
elle_ape 2017-11-28
  • 打赏
  • 举报
回复
文件a与文件b的第二列数据不一样

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧