=for comment ### Definitions "ugly characters" ;; chars either not allowed or desired "too long" ;; maximum allowable length for a basename "basename" ;; file-full-path minus file-extension "file-extension" ;; anything that satisfies m/\.[^\.]+$/ "rename suprises" ;; unexpected results from a batch rename ### standard operations rename extension (eg *.foo to *.fee) rename basename (eg ibm*.* to IBM*.*) routine replace (eg lower-case to upper-case) ### file-management operations rename and move rename and copy rename to non-yet-existent location (mkpath-style) ### scrubbing operations remove all "ugly characters" replace all "ugly characters" with a safe char (eg "_") reduce all "too long" names to a truncated shorter name (and allow the user to specify truncate rules) (and prevent "rename collision" on non-unique truncations) ### safeguard operations avoid "rename collision" by halting the program avoid "rename collision" by appending UniqueID avoid "rename suprises" with global-preview-before-rename ### rename based on content rename htm file by the content of the tag (and apply all scrubbing operations) (and skip the rename if already been done before) rename htm file by some UniqueID if no <title> tag exists ### rename based on context rename to include all directory-path-steps as part of the name rename to include the last 2 path-steps as part of the name =cut