|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 09 Apr 2001 20:17:56 To : Denis Balashov Subject : Re: подскажите, плиз, начинающему -------------------------------------------------------------------------------- Здравствуй, Denis Balashov. В твоём письме от Mon, 09 Apr 2001 18:08:52 +0400 написано: DB> Приветствую Вас, All! DB> @farr - массив строк DB> [.........] DB> $f = IO::File->new("<$filename") or die "Cannot open file $filename."; while(!$f->>eof()) { @farr[$i++]=$f->>getline(); DB> chomp(@farr[$i-1]); DB> }; DB> [.........] DB> Вот такая конструкция замечательно работает: DB> if(@farr[$k]=~/(.*)(\s)($server)(\spostfix\/qmgr\[\d+\]:\s)(\w+)/) {...} DB> т.е. по одной строке он ищет. А вот как сделать поиск по всему массиве? DB> if(@farr=~/(.*)(\s)($server)(\spostfix\/qmgr\[\d+\]:\s)(\w+)/m) {...} DB> ^^^^^ так не работает... А что, должен? Если тебя интересует наличие требуемого в любой строке массива, то самое короткое (но не самое быстрое) - if (grep /(.*)(\s)($server)(\spostfix\/qmgr\[\d+\]:\s)(\w+)/, @farr) { } Если оно может быть размазано по нескольким строкам массива, то if (join("\n",@farr) =~ /(.*)(\s)($server)(\spostfix\/qmgr\[\d+\]:\s)(\w+)/s) DB> пуковка m в конце не влияет Естественно. perldoc perlre до просветления. -- Artem Chuprina E-mail: ran@ran.pp.ru Programmer FIDO: 2:5020/371.32 Memonet Ltd. Phone: +7-095-284-1356 --- ifmail v.2.15dev5 * Origin: NTV Internet (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16483f0dccc71.html, оценка из 5, голосов 10
|