如何解决Perl:如果其他条件卡在了elsif上
我正在读取一个包含这样数据的文件
children = np.apply_along_axis(py_crossover,1,pop_resh).reshape(pop.shape)
[[0 7 6 1 5 2 3 4]
[0 1 6 7 2 5 4 3]
[6 5 1 7 0 2 4 3]
[7 6 5 1 2 0 3 4]]
我的代码:
a be cd d
e fe g h
ae be cd d
q wj e r
现在,如果我运行,它将仅在第一和第三条件
use warnings;
use strict;
open(tempp1,"<$temp1") or die "Could not open file $temp1: $!";
while(my $line=<tempp1>) {
my @rw = split " ",$line;
if ($rw[0] eq "e" and $rw[1] =~ /^f*/ )
{print ...}
elsif ($rw[0] eq "a" and $rw[1] =~ /^b*/ and $rw[2] =~ /^c*/ )
{print ...}
elsif ($rw[0] eq "ae" and $rw[1] =~ /^b*/ and $rw[2] =~ /^c*/ )
{print ...}
}
close tempp1;
和 ($rw[0] eq "e" and $rw[1] eq "f" )
上跳过第二个条件,但是当我删除第三个条件时,它将检查第二个条件并为其打印。有什么问题吗?
解决方法
这是我用来测试此程序的版本:
#!/usr/bin/perl
use strict;
use warnings;
while(my $line=<DATA>) {
chomp $line;
my @rw = split " ",$line;
if ($rw[0] eq "e" and $rw[1] =~ /^f*/ )
{print "1 - $line\n"; }
elsif ($rw[0] eq "a" and $rw[1] =~ /^b*/ and $rw[2] =~ /^c*/ )
{print "2 - $line\n"; }
elsif ($rw[0] eq "ae" and $rw[1] =~ /^b*/ and $rw[2] =~ /^c*/ )
{print "3 - $line\n"; }
}
__DATA__
a be cd d
e fe g h
ae be cd d
q wj e r
我得到的输出是这样:
2 - a be cd d
1 - e fe g h
3 - ae be cd d
第一行符合条件2。因此,无论您遇到什么问题,这似乎都与您的环境有关,而不是您的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。