[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, ![]() |
|
|
| ||
распихиваю в хеш содержимое строки, @hkey=(key1,key2,key3); foreach(@hkey){ if($string=~/<$_>(.*?)</$_>/){ $hkey{$_}=$1; }; } так вот, если в обрабатываемой строке ключи идут key1,key2,key3 то все нормально, а если key2,key1,key3); то кеу2 соответсвенно не находится. Как я понимаю, получается что поиск продолжается с позиции предыдущего найденного. Так вот, как бы мне сбросить поиск, чтобы он искал соответственно с начала каждый раз. |
| ||
вот такой код #!/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 |
| ||
v5.8.0, аналогично нормально |
| ||
Спасибо, нашел глюк. Очепятался, вместо i поставил ключ g. |