#!/usr/local/ActivePerl-5.16/bin/perl use POSIX qw/strftime/; sub fixdir { my $dir = shift; opendir my $DH, $dir or die "Not Found....$dir: $!"; while (my $f = readdir $DH) { next if grep $_ eq $f, qw/. ../; (my $new = $f) =~ s/[^a-zA-Z0-9_.]/_/g; next if ($new eq $f); while ( -e "$dir/$new") { $new .= "1"; } print STDERR "Renaming: $f -> $new\n"; rename "$dir/$f", "$dir/$new"; fixdir("$dir/$new") if -d "$dir/$new"; } } $Do_Dir = @ARGV[0]; print("ARG=", "$Do_Dir", "<<<<<<\n"); if ("$Do_Dir" == null ) { print ("No Folder Name given!\n"); exit; } print( "The Folder Name is: ", "$Do_Dir", "\n" ); fixdir($Do_Dir); print "Done..." produces this.... 9858-215-rfleisch:test_it p00015282$ ./Change_FName2.pl these ARG=these<<<<<< No Folder Name given! 9858-215-rfleisch:test_it p00015282$ ./Change_FName2.pl ARG=<<<<<< No Folder Name given! 9858-215-rfleisch:test_it p00015282$ Notice the SAME results ????????