Although this may not save you much here, you may want to look at Getopt::Std for grabbing command line options (maybe even Getopt::Long).
in reply to recursive perl chmod
Also, if you are distributing a replacement for a unix system tool, you might want to be more verbose about what this does that it doesn't. Because when I hear "recursive chmod" I think chmod 755 cgi-bin --recursive. Added: of course, by looking at it, I see that it does a great job of taking different file types and chmod'ing them appropriately. Cool.