opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; @files = grep {-f "$some_dir/$_" } readdir(DIR); closedir DIR; #### foreach (@files) { /^(\w+)\W+(\w+)\W+(\w+)\W+(\w+)$/; next unless $1 && $2 && $3 && $4; rename "$some_dir/$_", "$some_dir/$1 $2 - $3 $4.mp3" or die "Could not rename file: $!"; }