Ok, this is 'stolen' from the 'Perl Cookbook', and I would bet most veteran Monks will probably find this trivial but I enjoy it, and wanted to share it anyways.
whoops won't run with strict; (Oddly enough the example in the perl cookbook isn't using strict!), so I updated the code declaring $op and $was...
#!/usr/bin/perl -w
#
# rename - larry's filename fixer
# small script from the "perl cookbook"
#
# examples: % rename 's/\.orig$//' *.orig
# % rename 'tr/A-Z/a-Z/ unless /^Make/' *
# % rename '$_ .= "bad"' *.f
# % rename 'print "$_: "; s/foo/bar/ if <STDIN> =~ /^y/i' *
# % find /tmp -name '*~' -print | rename 's/^(.+)~$/.#$1/'
use strict;
my $op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
my $was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}