新手求助

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分了,谢谢。
...全文
83 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
elle_ape 2017-11-28
文件a与文件b的第二列数据不一样
  • 打赏
  • 举报
回复
相关推荐
发帖
脚本语言
加入

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2017-11-28 11:23
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: