Forum Webscript.Ru
Программирование => Perl => Тема начата: 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, но программа этого не видит...
-
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";
}
}
}
Все прекрасно работает, ищите проблему в данных Вашего массива.
-
# 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