用Perl解决一个编程问题:一份txt文件中 第一行SW; C208.1第二行空格空格C210.1空格 C1195.1,第三行

DW;C209.1C210.1第四行空格空格C211.1空格C212.1以此类推变成一个hash,键是C208_1<=>SW,C210_1<=>SW,C1195_1<=>... DW; C209.1 C210.1 第四行空格空格 C211.1空格C212.1 以此类推 变成一个hash,键是C208_1 <=>SW,C210_1<=>SW,C1195_1<=>SW,DW<=>C209_1等等,就是分号后面的数据共用一个SW,DW,但是分号后面的数据占据不止一行,现在拆开 展开
 我来答
willshdanvis
2012-05-14 · TA获得超过1018个赞
知道大有可为答主
回答量:2042
采纳率:100%
帮助的人:1388万
展开全部
原始文件:
SW;C208.1;
C210.1 C195.1;
DW;C209.1 C210.1;
C211.1 C212.1;
脚本:
#!/usr/bin/perl
open IN,"<test.txt";
my %hash;
my $value;
while(<IN>){
if(/^(\w+);(.+);$/){
$value=$1;
my @name=split/\s/,$2;
foreach(@name){
$hash{$_}=$value;
}
}
elsif(/^\s+(.+);$/){
my @name=split/\s/,$1;
foreach(@name){
$hash{$_}=$value;
}
}
}
close IN;
foreach $key(sort keys %hash){
print "$key=>$hash{$key}\n";
}
结果:
C195.1=>SW
C208.1=>SW
C209.1=>DW
C210.1=>DW
C211.1=>DW
C212.1=>DW
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式