use File::Find::Rule; my $start = shift || '.'; for my $oldname ( File::Find::Rule->file->in( $start ) ) { ( my $newname = $oldname ) =~ s/\..*?$//; rename $oldname, "$newname.xml" or die "..."; }