加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl开关没有正常掉落?

发布时间:2020-12-15 23:26:20 所属栏目:大数据 来源:网络整理
导读:我有一个我想测试的值($field).阅读perl doc( http://perldoc.perl.org/Switch.html#Allowing-fall-through),并认为我有这个钉.似乎没有,因为如果我通过’Exposure Bias’,就没有输出,尽管’Exposure Bias Value’可以正常工作.它没有抛出任何错误,所以我不
我有一个我想测试的值($field).阅读perl doc( http://perldoc.perl.org/Switch.html#Allowing-fall-through),并认为我有这个钉.似乎没有,因为如果我通过’Exposure Bias’,就没有输出,尽管’Exposure Bias Value’可以正常工作.它没有抛出任何错误,所以我不知道.

use Switch;
use strict; use warnings;

my $field = 'Exposure Bias';

switch($field){
    case 'Exposure Bias' {next;}
    case 'Exposure Bias Value' {print "Exp: $fieldn";}
}

更新

我似乎假装错了.如果匹配任何一种情况,我想用这个开关做的是打印运行.我认为接下来会将控制权传递给下一个案例的代码,但这是我的错误.

我如何对此进行编码,以便在第一种情况匹配时第二种情况下的代码运行?

工作方案

given($field){
    when(['Exposure Bias','Exposure Bias Value']){print "Exp: $fieldn";}
}

解决方法

DVK关于为什么你的开关没有按预期工作的评论是正确的,但是他忽略了提及一种更好,更安全的方式来实现你的开关.

Switch使用source filters和has been deprecated构建,最好避免使用.如果您正在使用Perl 5.10或更高版本,请使用given和when来构建switch语句:

use strict;
use warnings;

use feature qw(switch);

my $field = 'Exposure Bias';

given($field) {
    when ([ 
        'Exposure Bias','Exposure Bias Value',]) {
        print 'Exp: ' . $field . "n"; 
    }
}

有关详细信息,请参阅perlsyn.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读