首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当打印整个列文件而不是搜索行时,如何排除代码故障?perl

当打印整个列文件而不是搜索行时,如何排除代码故障?perl
EN

Stack Overflow用户
提问于 2015-07-27 22:56:26
回答 1查看 50关注 0票数 0

我已经在这段代码上工作了几天,在最后一段中遇到了一个问题。目标是让文件打印出“疾病/特征”在文件中出现的次数。使用计数器,问题是代码只是打印出数组的一列中的所有内容,而不是搜索它的次数。我假设这是计数器一半代码的问题。

代码语言:javascript
复制
    #!/usr/bin/perl

use strict;
use warnings;

my %TRAIThash;
my $usrin = "Leoprsy";
my %DISEASEslashTRAIT;   
open (my $input, "<", "gwas_catalog_v1.0-downloaded_2015-07-08.test") || die();

while (<$input>) {
    my @t = split (/\t/);
        my $tempVar = $t[7];
        chomp($tempVar);
        if (exists $DISEASEslashTRAIT{$tempVar}) {
            $DISEASEslashTRAIT{$tempVar}++;
    }
        else  {
            $DISEASEslashTRAIT{$tempVar}=1;
    }
}

my $DISEASEslashTRAITcount;
print $DISEASEslashTRAIT{"$usrin"}; "\n";
if (exists $DISEASEslashTRAIT{$usrin}) {
    print "\n $usrin is published ".$DISEASEslashTRAIT{$usrin}." times within the gwas database.\n";
}   
else {
    print "$usrin doesn't exist in the hash\n";
    }
close ($input);

我希望它打印的是,“最大摄氧量响应”在文件中发布了X次。

我已经浏览了这里和一些网站,但当我尝试它时,什么都没有真正起作用。我以前遇到过这种情况,所以我认为对于那些学习编程的人来说,这是一个常见的问题,但当这种情况发生时,我通常会回到绘图板上,所以我想找到一种更简单的方法来解决这个问题。输入是一个33列的代码,我使用的是一个10行的测试文件。我不能复制它,但它是GWAS数据文件。我添加了strict和warnings,现在它运行了,出现了完全相同的问题

EN

回答 1

Stack Overflow用户

发布于 2015-07-27 23:31:19

use strictuse warnings编译指示为编写干净的代码提供了大量信息和帮助。最重要的是,您需要在使用所有变量之前使用my声明它们。这将发现标识符的拼写错误。

例如,第一个循环构建%DISEASEslashTRAIThash散列,但在第二个循环中使用的是%DISEASEslashTRAIT。你还有一个应该只有一个美元符号的exists $$DISEASEslashTRAIT{"$usrin"}warnings会拿起它

这就是我写你的程序的方式。最好避免在局部变量中使用大写。

代码语言:javascript
复制
#!/usr/bin/perl

use strict;
use warnings;

open my $in_fh, '<', 'file.test' or die $!;
my %disease_traits;
while ( <$in_fh> ) {
    chomp;
    my $disease_trait = (split /\t/)[7];
    ++$disease_traits{$disease_trait} if $disease_trait;
}

while () {
    my $usrin = "Maximal oxygen uptake response";
    # my $usrin = <>;
    chomp $usrin;
    my $count = $disease_traits{$usrin};
    if ( defined $count ) {
        print qq{\n "$usrin" is published $disease_traits{$usrin} times within file.\n};
        last;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31656462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档