#!/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]");
until (scalar(@dirlist)==0) {
opendir my($dh),"$dirlist[0]";
my @filelist=grep {!/^\.\.?$/} readdir $dh;
for my $i (0..scalar(@filelist)-1) {
if ( -f "$dirlist[0]/$filelist[$i]" ) {
unlink("$dirlist[0]/$filelist[$i]");
}
if ( -d "$dirlist[0]/$filelist[$i]" ) {
push @dirlist,"$dirlist[0]/$filelist[$i]";
}
}
closedir $dh;rmdir "$dirlist[0]";shift @dirlist;
}
rmdir "$_[0]";
}
####
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]");
}