Remove many files, opendir()

Directories may contain lots of files. Therefore, wild-carded commands like rm $*$ may result in an overflow. The following script helps to clean-up such a directory:

#!/usr/bin/perl -w

sub yesno { print "$_[0] y/[n]: ";return (<STDIN> =~ /^(y|Y)$/);}

sub print_usage
{
    print <<EOF;

 The purpose of rm.pl is to delete many files.

 Usage: 

   # rm.pl file_pattern [y]

 'file_pattern' is a regular expression pattern.
 Make sure that wildcard characters are quoted.

   e.g.: rm.pl 'tst.*\.fio' y
EOF
1;
}

my ($file_spec, $flag, $rest) = @ARGV;

exit print_usage() if( !defined $file_spec || defined $rest);

$flag = 'n' if( !defined $flag);

opendir( D, ".");
@files = readdir(D);
closedir( D);

foreach my $fname (@files)
{
    $fname =~ s/^\s*(.*?)\s*$/$1/; # remove white space
    next if( $fname !~ /$file_spec/);
    if( $flag eq "y" || yesno( "delete $fname"))
    {
	print " deleting $fname \n";
	unlink $fname;
    }
}

exit 0;