检查字符串的最佳方法是Perl中有多个值之一?

时间:2011-10-01 19:35:02

标签: perl

我正处于一些Perl代码的中间,我发现自己编写了如下所示的一行代码的怪异性。 Perl充满了很好的小捷径,只需要比这更好的方式吗?

所以 - 有更好的方法吗?

unless($config->{'case_transform'} eq 'NONE' || 
       $config->{'case_transform'} eq 'UPPER' ||
       $config->{'case_transform'} eq 'LOWER' ||
       $config->{'case_transform'} eq 'CAPITAL' ||
       $config->{'case_transform'} eq 'RANDOM')
{
    $config->{'case_transform'} = 'NONE';
}

4 个答案:

答案 0 :(得分:6)

my %good_value = map { $_ => 1 } qw( NONE UPPER LOWER CAPITAL RANDOM );

unless $good_value{$config->{case_transform}) {
    $config->{case_transform} = 'NONE';
}

答案 1 :(得分:3)

还可以使用“Smart Match”运算符~~

use 5.010;

$config->{'case_transform'} = 'NONE' 
    unless $config->{'case_transform'} ~~
        ( 'NONE', 'UPPER', 'LOWER', 'CAPITAL', 'RANDOM' );

答案 2 :(得分:2)

unless ($config->{'case_transform'} =~ /^(NONE|UPPER|LOWER|CAPITAL|RANDOM)$/)
{
  ...
}

答案 3 :(得分:1)

$config->{'case_transform'} = 'NONE' unless $config->{'case_transform'} =~ /^(?:UPPER|LOWER|CAPITAL|RANDOM)$/;