Стирание символа перевода каретки
Более сложная задача, убрать все неправильные символы перевода каретки ^M, которые, допустим, появляются при передаче файлов far'ом на свой сайт:

#!/usr/bin/perl -w use strict; use File::Find; find( \&wanted, '/var/www/html/allsitecopy' ); sub wanted { return if /^\.\.?$/ and not /\.html?$/i and not -f; local $/; open F, "< $File::Find::name" or do { warn "Cannot read from $File::Find::name: $!"; return; }; binmode F; my $mass = <F>; close F; $mass =~ tr/\cM//d; open F, "> $File::Find::name" or do { warn "Cannot write to $File::Find::name: $!"; return; }; binmode F; print F $mass; close F; print "$File::Find::name all ok!\n"; } Не рекомендую запускать подобные программы, не разобравшись, правильно ли оно закрывает открытые файлы. Это все конечно очень здорово, что это можно cделать, но все-таки голову на плечах нужно иметь, сначала попробовать на маленькой поддиректории, убедится, что все ок и только после этого что то делать программой с серьезными данными.

Подсчет определенных файлов во всех вложенных директориях
Пример использования модуля File::Find для рекурсивного(вход во все поддиректории) просмотра или подсчета числа html или shtml или htm файлов(эти три вида файлов определяеются реглярным выражением s?html?): #!/usr/bin/perl -w use File::Find; find \&wanted, '/var/www/html'; sub wanted {print $count++, "\t$File::Find::name all ok!\n" if /s?html?/i} Всего 4 строчки против в среднем 10-20... удобно,быстро, и, главное, лениво.