Нашел вот на Яндексе задачку:
Что некорректно в следующем коде?
#!/usr/bin/perl while (<>) { while (m/\t/) { $tabs_count++; } print "$tabs_count\n"; }
Ну незнаю в чем трабл?! Может кто подскажет?
Я бы зделал так:
while (<>) { @lst = m/\t/g; $cnt = scalar @lst; print "$cnt\n"; }
;)

Первый пример
Первый пример "поймает" любую строку в которой есть хоть один таб, и посчитает ее один раз, даже если в ней сотня табов.
Соответственно, если цель посчитать именно строки, где есть табы, то все правильно.
прикольный код
Прикольный код, давеча написал!-)
Прикольность в самом методе фильтрации, порядке
использования общего $_ - оригинально!
(сначала получаем элементы map, затем портим $_
элементами grep, затем снова map и т.д...)
А насчет топика, Что некорректно?
ОТВЕТ: надо было в конце рега поставить модификатор g
ну и конечно инициализировать счетчик нулем, вначале!
;)
(невнимательность иногда очень подводит!)
...
Ещё несколько вариаций на свободную тему
...
Интересная Вики о Perl http://ru.wikipedia.org/wiki/Perl
Тоже неплохо, книжки разные... http://perl.find-info.ru/
Конфуз вышел в предудущем посте: съелась строка <SRC>
((-))