ApplyRegExRename('witch(\d\d\d)\.jpg','witch_%02d.jpg'); # param 1 = regex expression for find # param 2 = sprintf expression for replacement sub ApplyRegExRename # supports up to 5 caught matches within the pattern { my $regex = shift; my $repl = shift; ... my $file2 = $file; $file2 =~ s/$regex/sprintf($repl,$1,$2,$3,$4,$5)/e; print "renaming: $file to $file2\n"; ... }