|
Задача простая, но, надеюсь, это сэкономит кому-то пару часов.
#!/usr/bin/perl
# рекурсивное удаление папки на perl
use strict;
my $dir = ".";
my $DELETE_DIR = return_dir_handle();
opendir( $DELETE_DIR, "$dir" ) || die "Can't opendir $dir: $!\n";
while( defined( my $file = readdir( $DELETE_DIR ) ) ) {
next if $file =~ /^\.\.?$/; # Skip . and ..
if( -d "$dir/$file" ) {
# DELETE ALL SUB DIRS AND FILES
print "delete file $dir/$file ? (y/n)$/";
my $answear = <STDIN>;
chomp $answear;
if( $answear eq "y" ) {
&remove_dir( "$dir/$file" );
}#if
} else {
print "delete file $dir/$file ? (y/n)$/";
my $answear = <STDIN>;
chomp $answear;
if( $answear eq "y" ) {
print "unlink $dir/$file $/";
# unlink "$dir/$file";
}#if
} # End if
} # End while
closedir( $DELETE_DIR );
################################################################################
# Subprogram: remove_dir
#
sub remove_dir {
my ( $dir ) = @_;
my $DELETE_DIR = return_dir_handle();
opendir( $DELETE_DIR, "$dir" ) || die "Can't opendir $dir: $!\n";
while( defined( my $file = readdir( $DELETE_DIR ) ) ) {
next if $file =~ /^\.\.?$/; # Skip . and ..
if( -d "$dir/$file" ) {
print "delete file $dir/$file ? (y/n)$/";
my $answear = <STDIN>;
chomp $answear;
if( $answear eq "y" ) {
&remove_dir( "$dir/$file" );
}#if
} else {
print "delete file $dir/$file ? (y/n)$/";
my $answear = <STDIN>;
chomp $answear;
if( $answear eq "y" ) {
print "unlink $dir/$file $/";
# unlink "$dir/$file";
}#if
} # End if
} # End while
closedir( $DELETE_DIR );
print "rmdir $dir $/";
# rmdir $dir;
} # End sub remove_dir
################################################################################
# Subprogram: return_dir_handle
# Description: Создает анонимный манипулятор каталога
#
sub return_dir_handle {
local *DIRHANDLE;
return *DIRHANDLE
} # End sub return_dir_handle
Вернуться к списку записей комментарии работают на Disqus |
В админку |