Почему так? Perl
От: Аноним  
Дата: 20.09.06 14:06
Оценка:
Есть текст, в котором нужно выделить все совпадения с вот таким шаблоном "aaa(.+?)bbb(.+?)ccc" и распечатать $1/$2 соответственно. Так вот почему если сделать так:

   @Links = $TMP=~/aaa(.+?)bbb(.+?)ccc/g;
   join("\n",@Links);


то всё нормально, а если сразу, без перехода к массиву, т.е. вот так:

   foreach ($TMP=~/aaa(.+?)bbb(.+?)ccc/g)
   {
     print $1."\n".$2."\n";
   }


то распечатается одно и тоже (последнее) совпадение с шаблоном столько раз, сколько совпадение найдено.
Я понимаю, что в случае foreach, видимо, каждый раз выполняется сопоставление и печатается одно и тоже, но не пойму логику работы перла в случае перехода к массиву. Ведь модификатор /g есть и там и там..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.