首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果,为什么结果是不同的,那么这两种Perl写作风格有什么区别呢?

如果,为什么结果是不同的,那么这两种Perl写作风格有什么区别呢?
EN

Stack Overflow用户
提问于 2020-08-13 05:40:26
回答 1查看 65关注 0票数 1

我写了这两封信,但结果不一样。我不知道哪里出了问题。

对于第一种样式,我将操作放在“if”条件之前:

代码语言:javascript
复制
$da{$array[0]}++ and $str="\n$array[0]\t$array[1]\t$array[-2]\n" if(exists $da{$array[0]} and $str!~/$array[0]\t$array[1]\t$array[-2]/);

结果是:

R8112033 3

R8112038 1

R8112056 1

R8112057 1

至于第二种常见风格:

代码语言:javascript
复制
if(exists $da{$array[0]} and $str!~/$array[0]\t$array[1]\t$array[-2]/)
  {
    $da{$array[0]}++;
    $str="\n$array[0]\t$array[1]\t$array[-2]\n";
  }

结果是:

R8112033 2

R8112038 1

R8112056 1

R8112057 1

第二个结果是我想要什么,但我不知道为什么它不能在第一风格。

以下是数据文件:

R8112033 EGFR T790M missense_mutation No

R8112033 EGFR L858R missense_mutation No

R8112033 TP53 - missense_mutation No .

R8112038 KRAS G12D missense_mutation No

R8112056 - L858R missense_mutation是

R8112057 KRAS G12C missense_mutation No

以下是完整的代码:

代码语言:javascript
复制
use strict;
use warnings;

my $infile=shift;
my %da;
my $str=0;
open IN, "$infile" or die $!;
while(<IN>)
{
        s/\r|\n//g;
        my @array = split /\t/,$_;
        $da{$array[0]}=0 if($array[-3]=~/\w/);
}
close IN;

open IN, "$infile" or die $!;
while(<IN>)
{
        s/\r|\n//g;
        my @array = split /\t/,$_;
        $da{$array[0]}++ and $str="\n$array[0]\t$array[1]\t$array[-2]\n" if(exists $da{$array[0]} and $str!~/$array[0]\t$array[1]\t$array[-2]/);
        #if(exists $da{$array[0]} and $str!~/$array[0]\t$array[1]\t$array[-2]/)
        #{
        #        $da{$array[0]}++;
        #        $str="\n$array[0]\t$array[1]\t$array[-2]\n";
        #}
}
close IN;

for my $key (sort keys %da)
{
        print "$key\t$da{$key}\n";
}

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 05:45:50

你得到不同的结果,因为

代码语言:javascript
复制
$da{$array[0]}++ and $str = "..."

代码语言:javascript
复制
$da{$array[0]}++;  $str = "..."

是不对等的。第二个表达式计算两个表达式,而第一个表达式可能不会执行赋值。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63388775

复制
相关文章

相似问题

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