my @files = glob("./*"); for my $filename (@files) { (my $newname = $filename ) =~ s/[^A-Za-z0-9\.]/_/; if ( -e $newname ) { warn "$newname already exists, skipping rename on $filename\n"; } else { rename $filename, $newname; } }