#!/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]); }