LINUX.ORG.RU

[perl]регэксп

 


0

0

Можно ли написать регэксп делающий такое действие:

if ( $r = 1 ) {} elsif ( $r = 2 ) {} elsif ( $r = 3 ) {} else {} ... ?

anonymous

так правильней if ( $r = 1 ) { $r = 'а';} elsif ( $r = 2 ) { $r = 'б';} elsif ( $r = 3 ) { $r = 'г' } else { $r = 'с' } ... ?

anonymous
()
Ответ на: комментарий от anonymous

Наиболее тупо:

my %replace = (
1 => 'a',
2 => 'b',
);

s/(.)/$replace{$1} || $1/ge;

А вообще там что-то вроде y/a-z/1-8i-z/ можно сделать, если все однобуквенно.

lodin ★★★★
()

perldoc perlre

"(?(condition)yes-pattern│no-pattern)"

anonymous
()

Кстати, а почему именно регексп? Для того, как поставлена задача, вполне достаточно просто хеша.

my %values = (
1 => 'r',
r => 2,
);

$r = $values{$r};

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.