Forum Webscript.Ru

Программирование => Perl => Тема начата: Error202 от 26 Марта 2005, 21:48:02

Название: поиск по шаблону
Отправлено: Error202 от 26 Марта 2005, 21:48:02
 
 $i=0;
 foreach (@all)
 {
  $i++;  if (m/text1/g)
  {
   $j++;
   if  (m/text2/g) { print FF "Строка: $j\\n";};
  };
...
 

ALL - массив строк

Из массива АЛЛ выбираются строки, где есть ТЕКСТ1, затем увеличивается на единицу счетчик J. Если в строке есть ТЕКСТ2, то записать в файл данные...

Почему проверка на ТЕКСТ2 не работает?
В строке есть ТЕКСТ2, но программа этого не видит...
Название: поиск по шаблону
Отправлено: vladsu от 27 Марта 2005, 04:47:31

my @all = (\'text1text2\', \'text1text2\');

my $i=0;
my $j=0;

foreach ( @all ) {
          $i++;
          if ( m/text1/g ) {
               $j++;
               if ( m/text2/g ) {
                    print "Строка: $j\\n";
               }
          }
}


Все прекрасно работает, ищите проблему в данных Вашего массива.
Название: поиск по шаблону
Отправлено: arto от 27 Марта 2005, 13:29:52
# perl -de0
DB<1> @all = qw(text2text1 text1text2);

DB<2> foreach ( @all ) { $i++; if ( m/text1/g ) { $j++; if ( m/text2/g ) { print "Строка: $j\\n"; } } }
Строка: 2
DB<3> foreach ( @all ) { $i++; if ( m/text1/ ) { $j++; if ( m/text2/ ) { print "Строка: $j\\n"; } } }
Строка: 3
Строка: 4
DB><4> ^D