Perl Cd Bookshelf [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Perl Cd Bookshelf [Electronic resources] - نسخه متنی

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید



9.12. Program: symirror



Example 9-6 recursively duplicates a directory tree,
making a shadow forest full of symlinks pointing back at the real
files.

Example 9-6. symirror


#!/usr/bin/perl
# symirror - build spectral forest of symlinks
use warnings;
use strict;
use Cwd qw();
use File::Find qw(find);
die "usage: $0 realdir mirrordir" unless @ARGV == 2;
our $SRC = $ARGV[0];
our $DST = $ARGV[1];
my $oldmask = umask 077; # in case was insanely uncreatable
chdir $SRC or die "can't chdir $SRC: $!";
unless (-d $DST) {
mkdir($DST, 0700) or die "can't mkdir $DST: $!";
}
find {
wanted => \&shadow,
postprocess => \&fixmode,
} => ".";
umask $oldmask;
sub shadow {
(my $name = $File::Find::name) =~ s!^\./!!; # correct name
return if $name eq ".";
if (-d) { # make a real dir; we'll copy mode later
mkdir("$DST/$name", 0700)
or die "can't mkdir $DST/$name: $!";
} else { # all else gets symlinked
symlink("$SRC/$name", "$DST/$name")
or die "can't symlink $SRC/$name to $DST/$name: $!";
}
}
sub fixmode {
my $dir = $File::Find::dir;
my $mode = (stat("$SRC/$dir"))[2] & 07777;
chmod($mode, "$DST/$dir")
or die "can't set mode on $DST/$dir: $!";
}



9.11. Working with Symbolic File Permissions Instead of Octal Values9.13. Program: lst




Copyright © 2003 O'Reilly & Associates. All rights reserved.

/ 875