|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alex Shevchuk 2:5020/400 15 Nov 2004 19:35:59 To : Artem Chuprina Subject : Re: Замена при условии -------------------------------------------------------------------------------- AS>>> my $x = 0; s|:(\w+):|$x < 3 && -f "$1.gif" ? ($x++, "<img AS>>> src=smiles/$1.gif>") : $&|ge; AS>> Здорово! Кто бы мог подумать, что внутрь регекспа можно цикл >>>> запихнуть! :)) AC> Любой, кто читал perldoc perlre. Впрочем, он также знал бы, что в AC> данном случае цикл засунут ни разу не в регекс. Регулярное выражение - AC> это первый аргумент оператора s, и в него циклы вставляются иначе. И AC> кстати, тут и не цикл. Тут его тело. Цикл-то снаружи - начальное AC> присвоение $x и модификатор g. Короче, инкремент $x происходит всякий раз, когда находится соответствие шаблону, а также выполняется условие наличия файла. В любом случае это цикл. Хоть и нестандартный. ;) AS>> Только вот почему $&, а не $1? Или в данном случае без разницы? AC> $1 - это без обоих :. Если тебе не надо менять на смайлик, то надо AC> оставить как было. А это - $&. Упс. Точно. :( Best regards, Alex. --- ifmail v.2.15dev5.3 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/166791fe54533.html, оценка из 5, голосов 10
|