in reply to Sorry, but bash can do it!
in thread renaming files

Why even use cut, awk, or sed to trim when you could just use the shell parameter replacement "${i%TMB}JPG". But to keep it perl:
while (<*.TMB>) { my $new = $_; substr($new, -3) = "JPG"; warn "$new already exists", next if -e $new; rename $_, $new or warn "Error renaming $_: $!"; }
Update: I just saw only the above node when I answered, I now see that except for my first comment on the shell solution, I've posted practically the same code already posted higher up (great minds think alike I suppose) :0)