Лучший способ проверки строки имеет одно из многих значений в Perl? - PullRequest
2 голосов
/ 01 октября 2011

Я просто в середине некоторого кода на 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 ]

6 голосов
/ 01 октября 2011
my %good_value = map { $_ => 1 } qw( NONE UPPER LOWER CAPITAL RANDOM );

unless $good_value{$config->{case_transform}) {
    $config->{case_transform} = 'NONE';
}
3 голосов
/ 02 октября 2011

Также доступен оператор " Smart Match " ~~.

use 5.010;

$config->{'case_transform'} = 'NONE' 
    unless $config->{'case_transform'} ~~
        ( 'NONE', 'UPPER', 'LOWER', 'CAPITAL', 'RANDOM' );
2 голосов
/ 01 октября 2011
unless ($config->{'case_transform'} =~ /^(NONE|UPPER|LOWER|CAPITAL|RANDOM)$/)
{
  ...
}
1 голос
/ 01 октября 2011
$config->{'case_transform'} = 'NONE' unless $config->{'case_transform'} =~ /^(?:UPPER|LOWER|CAPITAL|RANDOM)$/;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...