|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : ‘ҐаЈҐ© 2:5020/400 09 Mar 2007 09:32:31 To : Artem Chuprina Subject : Re: Про копирования каталогов... -------------------------------------------------------------------------------- Привет... Artem Chuprina пишет: AC> Sergey @ Wed, 7 Mar 2007 05:16:01 +0000 (UTC): AC> S> Привет... AC> S> Подскажите плиииз, правильно ли я делаю... Исключения копирования каталогов AC> S> (перечисленных в файле) из корня в другое место... AC> S> Есть файлы с перечислением построчно каталогов, которые не надо AC> S> копировать. Hазвания файлов совпадают с именем сервера, если его нет, то AC> S> default файл. И вот что получилось AC> S> -------------------- AC> S> #!/usr/bin/perl -w AC> S> $ETC = "/usr/local/etc/dir" AC> S> $SERVER=split(/,/, $ARGV[0]); AC> S> $SERVER =~ tr/a-z/A-Z/; AC> S> $fromdir="/tmp/fromdir"; AC> S> $outdir="/tmp/outdir"; AC> S> $CP="bin/cp"; AC> S> sub COPY_DIR AC> S> { AC> S> my (@strs,$str,@dirs,$dir); AC> S> if ( -e $ETC/$SERVER\.excl) AC> S> { AC> S> open (EXC, "$ETC/$SERVER\.excl); AC> S> } AC> S> else AC> S> { AC> S> open (EXC, "$ETC/default\.excl"); AC> S> } AC> S> while ( $exc = <EXC> ) AC> S> { AC> S> chop; AC> S> opendir (D, $fromdir) or warn "Cannot open $fromdir: !" and next; AC> S> @dirs=grep {!(/^\./) && "$fromdir/$_"} readdir D; AC> S> rewinddir D; AC> S> foreach $dir (@dirs) AC> S> { AC> S> if ( -d ($dir ne $exc)) AC> S> { AC> S> @strs=`($CP -pR -- $fromdir/$dir "$outdir") &2>1`; AC> S> foreach $str (@strs) AC> S> { AC> S> &Log(2,"$str"); AC> S> } AC> S> closedir D; AC> S> } AC> S> close EXC; AC> S> } AC> S> ------------------------------- AC> S> Подскажите плииз , что где не так... Или как может быть решить такую задачу AC> S> попроще, с помощью регекспов??? AC> S> Буду благодарен любой посдсказке.... AC> Если я правильно понял сходу, то не на первой итерации while не будет AC> скопировано только то, что нарисовано в первой строчке EXC, но оно AC> успешно будет скопировано на второй. AC> А правильно будет сначала зачитать весь EXC, а потом уже открывать AC> директорию, и проверять по всему списку. Так я вроде так и делаю... Если неправ, то поправьте меня плииз... Hо меня больше вот эта конструкция интересует.... С копируются ли все имена из каталога $fromdir в @dirs и будут ли они сравниваться с EXC ??? -------- ...... opendir (D, $fromdir) or warn "Cannot open $fromdir: !" and next; @dirs=grep {!(/^\./) && "$fromdir/$_"} readdir D; rewinddir D; foreach $dir (@dirs) { if ( -d ($dir ne $exc)) { @strs=`($CP -pR -- $fromdir/$dir "$outdir") &2>1`; foreach $str (@strs) ...... -------------- AC> А ну и кроме того, сильно подозреваю, что ($dir ne $exc) дает результат, AC> к которому бессмысленно применять -d. Hу а что количество открывающих AC> фигурных скобок не соответствует количеству закрывающих, тебе сам perl AC> расскажет... Правда ваша поправил я все :)... -------------- С уважением Сергей -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5.3 * Origin: Talk.ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/648889bc6b6b.html, оценка из 5, голосов 10
|