in reply to rename 0.3 - now with two extra cupholders

Well, at least you know I'm using it... :-)

While doing a dry run using your sanitize option, I noticed a warning:

Use of uninitialized value in concatenation (.) or string at (eval 1) +line 1.
I ran it again with -v to print to get this:
Using expression: sub { s/[!"$&()=?`*';<>|_[:cntrl:][:blank:]]+/_/g }
The problem is that the $& is being interpolated. It is uninitialized, hence the warning. Worse, however, is that it doesn't remove dollars and ampersands from filenames. The fix is obvious; just escape the '$' in your character class.

FWIW, this behavior surprised me. Badly surprised me. I blanch at the thought that I may have made this same error countless times. I believe I've even given the advice "there's no need to escape a dollar sign in your character class" many, many times.

"My two cents aren't worth a dime.";