Когда я сталкиваюсь с такими проблемами, когда мне интересно, почему что-то в блоке не происходит, я добавляю некоторый код отладки, чтобы убедиться, что я действительно вхожу в блок:
print "\@lines has " . @lines . " elements to process\n";
foreach my $line ( @lines )
{
print "Processing [$line]\n";
...;
}
Вы также можете делать это в своем любимом отладчике, устанавливая точки останова и проверяя переменные, но это слишком сложная работа для меня. :)
Если вам нужно выучить Perl и уже знать Python, у вас не должно быть особых проблем с прохождением Изучение Perl через пару дней.