WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема perl, regexp К предыдущему сообщению На следующее сообщение Программирование

Отправил Rupert в 12:29 04.01.2003[Ответить]
распихиваю в хеш содержимое строки,

@hkey=(key1,key2,key3);
foreach(@hkey){
if($string=~/<$_>(.*?)</$_>/){
$hkey{$_}=$1;
};
}

так вот, если в обрабатываемой строке ключи идут
key1,key2,key3
то все нормально, а если
key2,key1,key3);

то кеу2 соответсвенно не находится. Как я понимаю, получается что поиск продолжается с позиции предыдущего найденного. Так вот, как бы мне сбросить поиск, чтобы он искал соответственно с начала каждый раз.



Отправил MaG в 13:23 04.01.2003[Ответить]
вот такой код
#!/usr/bin/perl
$string='<key1>text1</key1><key2>text2</key2><key3>text3</key3>';
@hkey=(key1,key2,key3);
foreach(@hkey){
if($string=~/<$_>(.*?)</$_>/){
$hkey{$_}=$1;
print $_=$hkey{$_} ;
};
}

выдает следующее:
key1=text1
key2=text2
key3=text3

меняю $string на '<key2>text2</key2><key1>text1</key1><key3>text3</key3>'

получаю
key1=text1
key2=text2
key3=text3

т.е. все нормально
perl версии 5.005_03


Отправил CAHbKA в 15:05 04.01.2003[Ответить]
v5.8.0, аналогично нормально


Отправил Rupert в 11:57 05.01.2003[Ответить]
Спасибо, нашел глюк. Очепятался, вместо i поставил ключ g.