|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 11 Mar 2007 02:31:15 To : ‘ҐаЈҐ© Subject : Re: Про копирования каталогов... -------------------------------------------------------------------------------- Сергей -> Sergey @ Fri, 9 Mar 2007 07:53:16 +0000 (UTC): С> Привет... С> Ха прикольно это работает... :))) С> -------------------- С> #!/usr/bin/perl -w С> $ETC = "/usr/local/etc/dir" С> $SERVER=split(/,/, $ARGV[0]); С> $SERVER =~ tr/a-z/A-Z/; С> $fromdir="/tmp/fromdir"; С> $outdir="/tmp/outdir"; С> $CP="bin/cp"; С> sub COPY_DIR С> { С> my (@strs,$str,@dirs,$dir); С> if ( -e $ETC/$SERVER\.excl) С> { С> open (EXC, "$ETC/$SERVER\.excl); С> } С> else С> { С> open (EXC, "$ETC/default\.excl"); С> } С> while ( $exc = <EXC> ) С> { С> chomp $exc; С> opendir (D, $fromdir) or warn "Cannot open С> $fromdir: !" and next; С> @dirs=grep {!(/^\./) && "$fromdir/$_"} readdir D; С> rewinddir D; С> foreach $dir (@dirs) С> { С> if ( "$dir" ne "$exc" ) С> { С> @strs=`($CP -pR -- "$fromdir/$dir" "$outdir") &2>1`; С> foreach $str (@strs) С> { С> &Log(2,"$str"); С> } С> closedir D; С> } С> } С> close EXC; С> } С> ------------ С> Короче это выглядит так... В файле $exc 6 записей С> и при выполнении скрипта происходит 6 раз С> копирование всего подкаталога "$fromdir/$dir", HО С> каждый раз за исключением текущей записи $dir... С> :))) Это правильно, но нужно 1 прохождение и 6 С> исключений $dir. Где это я напартачил???? С> подскажите плиииз... И как сделать чтобы было одно С> прохождение, со всеми 6-ю сравнениями??? Ми же вас придуприждалы... У тебя цикл по исключениям - внешний по отношению к циклу по директориям. А надо, ну в худшем случае наоборот. В правильном еще внутри должен быть не цикл, а проверка на вхождение в хэш, но это когда программировать научишься. Сперва сделай, чтоб работало. Да, в команде копирования в "$outdir" перед закрывающей кавычкой добавь / - может пригодиться... -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru Unix-like -- для кинестетиков, Emacs -- для аудиалов, Mac -- для визуалов, Windows -- для чайников RockMover in <RM279891167063140rmover@golovolomka.net> --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11477ea932d82.html, оценка из 5, голосов 10
|