忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 徽章 文库 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12
最近访问板块 发新帖

perl两个文本库对比融合输出到第三个文本中,同一个坐标数据相同用A表示,不同B表示。 [复制链接]

论坛徽章:
0
发表于 2018-01-09 09:56 |显示全部楼层
回复 10# 本友会机友会摄友会

不好意思,这两天我才学习了Unicode的相关知识,但我的系统有点问题,没能读出“.psl”。我还有一个问题:
我的A,B文本数据是圆形的(不是严格等距递增),例如:
      gj1k
    g5kn1k
  d6ig7n130
  dfkl35hbn
   83onbdf
    jkdhl9
     lkgt
或者四角的空格用一个点“.”或“0”表示:
......gj1k......
....g5kn1k....
..d6ig7n130.
..dfkl35hbn..
...83onbdf...
.....jkdhl9.....
......lkgt.......

我在判断的时候需要对比“中间圆形字符”,四角的直接输出“.”。
我想加一个if()判断,如果A文件是“\n”或“.”或“0”,则输出“.”,else再进行eq对比判断。
可是在If()括号里我该怎么表示文件的每一个元素呢?或者怎么区分字母数字和空格?实验几次输出的结果要么全是“.”,要么那一行只有一个“.”
不知道这样个想法对不对,请求支援,谢谢!

论坛徽章:
0
发表于 2018-01-09 11:05 |显示全部楼层
回复 10# 本友会机友会摄友会

不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";               
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";

while (my $m = <FHA>) {                                       
    my $n = <FHB>;                                             
    chomp $m;                                                  
    chomp $n;
    print OUT X($m,$n), "\n";                                             
}                                                              
sub X{                                                         
    my ($m, $n) = @_;                                          
    my ($r) = "";                                             
    for (0..length($m)-1) {
       if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
       {
         $r .= ".";
       }

       else
       {
         $r .= (substr($m, $_, 1) eq substr($n, $_, 1)?'A':'z');
       }                                   
    }                                                         
    return($r);                                                   
}


论坛徽章:
0
发表于 2018-01-09 11:05 |显示全部楼层
回复 10# 本友会机友会摄友会

不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";               
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";

while (my $m = <FHA>) {                                       
    my $n = <FHB>;                                             
    chomp $m;                                                  
    chomp $n;
    print OUT X($m,$n), "\n";                                             
}                                                              
sub X{                                                         
    my ($m, $n) = @_;                                          
    my ($r) = "";                                             
    for (0..length($m)-1) {
       if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
       {
         $r .= ".";
       }

       else
       {
         $r .= (substr($m, $_, 1) eq substr($n, $_, 1)?'A':'z');
       }                                   
    }                                                         
    return($r);                                                   
}


论坛徽章:
0
发表于 2018-01-09 11:05 |显示全部楼层
回复 10# 本友会机友会摄友会

不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";               
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";

while (my $m = <FHA>) {                                       
    my $n = <FHB>;                                             
    chomp $m;                                                  
    chomp $n;
    print OUT X($m,$n), "\n";                                             
}                                                              
sub X{                                                         
    my ($m, $n) = @_;                                          
    my ($r) = "";                                             
    for (0..length($m)-1) {
       if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
       {
         $r .= ".";
       }

       else
       {
         $r .= (substr($m, $_, 1) eq substr($n, $_, 1)?'A':'z');
       }                                   
    }                                                         
    return($r);                                                   
}


论坛徽章:
0
发表于 2018-01-09 11:07 |显示全部楼层
回复 10# 本友会机友会摄友会

大神我自己弄出来了!不会删帖子,所以再次回复,谢谢解惑!我是在原来脚本基础上改的,给需要的人看吧:open(FHA, '<A.txt') or die "can't open A.txt\n";               
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";

while (my $m = <FHA>) {                                       
    my $n = <FHB>;                                             
    chomp $m;                                                  
    chomp $n;
    print OUT X($m,$n), "\n";                                             
}                                                              
sub X{                                                         
    my ($m, $n) = @_;                                          
    my ($r) = "";                                             
    for (0..length($m)-1) {
       if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
       {
         $r .= ".";
       }

       else
       {
         $r .= (substr($m, $_, 1) eq substr($n, $_, 1)?'A':'z');
       }                                   
    }                                                         
    return($r);                                                   
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

报名链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP