#!/usr/bin/env perl
use strict; use warnings;
dircopy($ARGV[0],$ARGV[1]);
sub dircopy {
my @dirlist=($_[0]);
my @dircopy=($_[1]);
until (scalar(@dirlist)==0) {
mkdir "$dircopy[0]";
opendir my($dh),$dirlist[0];
my @filelist=grep {!/^\.\.?$/} readdir $dh;
for my $i (0..scalar(@filelist)-1) {
if ( -f "$dirlist[0]/$filelist[$i]" ) {
fcopy("$dirlist[0]/$filelist[$i]","$dircopy[0]/$filelist[$i]");
}
if ( -d "$dirlist[0]/$filelist[$i]" ) {
push @dirlist,"$dirlist[0]/$filelist[$i]";
push @dircopy,"$dircopy[0]/$filelist[$i]";
}
}
closedir $dh;
shift @dirlist;shift @dircopy;
}
}
sub fcopy {
my ($i,$data,$cpo,$cpn);
open($cpo,"<",$_[0]) or die $!; binmode($cpo);
open($cpn,">",$_[1]) or die $!; binmode($cpn);
while (($i=sysread $cpo,$data,4096)!=0){print $cpn $data};
close($cpn);close($cpo);
}
####
#!/usr/bin/env perl
use strict; use warnings;
dir_del($ARGV[0]);
sub dir_del {
my @dirlist=("$_[0]");
my $r=0; my $s=scalar(@dirlist);
while ( $r < $s ) {
opendir my($dh),$dirlist[$r];
my @filelist=grep {!/^\.\.?$/} readdir $dh;
for my $i ( 0..scalar(@filelist)-1 ) {
if ( -f "$dirlist[$r]/$filelist[$i]" ) {
unlink("$dirlist[$r]/$filelist[$i]");
} else {
push @dirlist,"$dirlist[$r]/$filelist[$i]";
$s=scalar(@dirlist);
}
}
closedir $dh;$r+=1;
}
my $a=scalar(@dirlist)-1;
for my $i ( 0..scalar(@dirlist)-1 ) {
rmdir($dirlist[$a]);$a-=1;
}
}
####
sub fmove {
my ($i,$data,$mvo,$mvn);
open($mvo,"<",$_[0]) or die $!; binmode($mvo);
open($mvn,">",$_[1]) or die $!; binmode($mvn);
while (($i=sysread $mvo,$data,4096)!=0){print $mvn $data};
close($mvn);close($mvo);unlink($_[0]);
}