URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 16681
[ Назад ]

Исходное сообщение
"Еще по перлу"

Отправлено gexa , 26-Апр-02 14:32 
Спасибо soldier и ilia. А как красиво сделать замену значения переменной на другое значение, например:
$array="ws","g54h","jgh","i2uy","b543vc",...
$array2="53","gfd","hgfhfgh",...
надо если $var==array[0] то $var=array2[0];
     если $var==array[2] то $var=array2[2];
может удобнее Хэшем? просветите меня пожалуйста.

  

Содержание

Сообщения в этом обсуждении
"RE: Еще по перлу"
Отправлено Cobold , 27-Апр-02 01:51 
>Спасибо soldier и ilia. А как
>красиво сделать замену значения переменной
>на другое значение, например:
>$array="ws","g54h","jgh","i2uy","b543vc",...
>$array2="53","gfd","hgfhfgh",...
>надо если $var==array[0] то $var=array2[0];
>     если
>$var==array[2] то $var=array2[2];

Не совсем понятная постановка вопроса: есть ли гарантия что $var==array[?] случается всего один раз?

Кроме того, для символьных значений очень желательно пользоваться не "==" а "eq"

Общий случай:

my $n;  # локальный счетчик
@var=grep($var eq $array[$n++],@array2);


"RE: Еще по перлу"
Отправлено Oleg , 06-Май-02 21:57 
>Спасибо soldier и ilia. А как
>красиво сделать замену значения переменной
>на другое значение, например:
>$array="ws","g54h","jgh","i2uy","b543vc",...
>$array2="53","gfd","hgfhfgh",...
>надо если $var==array[0] то $var=array2[0];
>     если
>$var==array[2] то $var=array2[2];
>может удобнее Хэшем? просветите меня пожалуйста.
>

for $i (0 .. $#array) {
  $var = $array2[$i] if $var eq $array[$i];
}

В $var будет сохранено значение из @array2 с индексом последнего элемнта @array совпавшего с $var.

Это оно или нет?
Если нужно только до первого совпадения тогда:
for $i (0 .. $#array) {
  if($var eq $array[$i]) {
    $var = $aray2[$i];
    last;
  }
}