|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Kozachenko Alexey 2:5020/400 28 Nov 2000 15:56:57 To : All Subject : Re: кусок скрипта -------------------------------------------------------------------------------- Привет Всем! > Вот сабж >------------- >$today=`date +%d%m`; > >while($inputline=<file_in>) { > print "$inputline"; > if ($inputline=~ /$today/) { > print file_out ("$inputline"); > } > else { > print file_out ("----\n"); > } >} >-------------- > но получается так, что в выходной файл записыватся $inputline только в тех >случаях, когда вся строка равна переменной today, если же переменная является >частью строки, то не работает. Как я понял, то оператор =~ ищет вхождение >подстроки в строку. Где я напартачил или непонял? Да действительно, оператор =~ (или =~m// ) ищет вхождение подстроки в строку. Конструкция if ($inputline=~ /$today/) { print file_out ("$inputline"); } ищет вхождение переменной $today в строку $inputline c начала строки. Чтобы найти входнение не сначала строки, а в любом месте, я бы написал так if ($inputline=~ /.+${today}.+/) { print file_out ("$inputline"); } Чтобы найти полное совпадение со строкой я бы написал так if ($inputline=~ /^${today}$/) { print file_out ("$inputline"); } Модификаторы . - любой символ .+ - любое количество символов ^ - начало строки $ - конец строки Вроде все правильно. С уважением, Козаченко Алексей. --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/65771c27f9ea.html, оценка из 5, голосов 10
|