The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Perl" / Оглавление документа
Стирание символа перевода каретки
Более сложная задача, убрать все неправильные символы перевода каретки ^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... удобно,быстро, и, главное, лениво.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру