hi folks, i tryed to copy a whole direktorytree to another and made a
routine that does not need a Module and run on several platformes. I want to
know what you think about it, how can I make  it better ??

here it comes:
----
#!perl.exe
local ($from, $to, $del)= @ARGV;
unless ($from ne '' && $to ne '')
{
        print "move.pl [from] [to] ([del])\n";
        print "if you use del, you move the files, otherwise it will be copyed.\n";
        exit;
}
mkdir($to);
my $num;
my $r;
my $w;
my $data;
opendir(DIR, "$from") or print " $!";
while($data = readdir(DIR))
{
        $num++;
        $r = 'read_'.$num;
        $w = 'write_'.$num;
        next if($data eq '.');
        next if($data eq '..');
        if(-d "$from/$data")
        {
                mkdir("$to/$data");
                subdir($num, $data);
                unlink("$from/$data") if($del eq 'del');
        }
        else
        {
                open($r, "<$from/$data") or print "$!";
                open($w, ">$to/$data") or print "$!";
                        while($str = <$r>)
                        {
                                print $w $str;
                        }
                close($r);
                close($w);
                unlink("$from/$data") if($del eq 'del');
        }
}
closedir(DIR);
exit;

sub subdir
{
        my $subnum = shift;
        my $d = shift;
        my $r = 'read_'.$num;
        my $w = 'write_'.$num;
        my $data;
        opendir(DIR, "$from/$d") or print "$!";
        while($data = readdir(DIR))
        {
                $num++;
                $r = 'read_'.$num;
                $w = 'write_'.$num;
                next if($data eq '.');
                next if($data eq '..');
                if(-d "$from/$d/$data")
                {
                        mkdir("$to/$d/$data");
                        subdir($num, "$d/$data");
                        unlink("$from/$d/data") if($del eq 'del');
                }
                else
                {
                        open($r, "<$from/$d/$data") or print "$!";
                        open($w, ">$to/$d/$data") or print "$!";
                                while($str = <$r>)
                                {
                                        print $w $str;
                                }
                        close($r);
                        close($w);
                        unlink("$from/$d/data") if($del eq 'del');
                }
        }
        closedir(DIR);
        return;
}
----

_______________________________________________
Perl-Win32-Web mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/perl-win32-web

Reply via email to