http://qs1969.pair.com?node_id=829948


in reply to rename 0.3 - now with two extra cupholders

I just tried this with Strawberryperl while a go, and remember it working just well. Now that I'm sitting on Windows 7* it doesn't seem to be able to get the list of files:

C:\Pics>dir Volume in drive C has no label. Volume Serial Number is 4C17-845B Directory of C:\Pics 20.02.2010 04:23 <DIR> . 20.02.2010 04:23 <DIR> .. 29.05.2009 14:59 1 578 868 DSCF3888.JPG 29.05.2009 14:59 1 565 825 DSCF3889.JPG 29.05.2009 14:59 1 643 616 DSCF3890.JPG 29.05.2009 14:59 1 664 020 DSCF3891.JPG 4 File(s) 6 452 329 bytes 2 Dir(s) 187 149 787 136 bytes free C:\Pics>renamer -n -s DSCF okay *.JPG Dry run, no changes were made. C:\Pics>

Notice that I had to rename the script to renamer, but this does not affect anything

* I suppose it worked under Windows 7 earlier, but it might have been Release Candidate of Windows 7, now I'm using the real thing.

Replies are listed 'Best First'.
Re^2: rename 0.3 - now with two extra cupholders
by Anonymous Monk on Mar 21, 2010 at 14:48 UTC
    It never worked the way you remember, try adding use Win32::Autoglob;
    perl -MWin32::Autoglob -le"print for @ARGV" *

      ... or alternatively

      @ARGV = map { glob $_ } @ARGV;

      or, if you want sane whitespace handling,

      use File::Glob qw(bsd_glob); @ARGV = map { bsd_glob $_ } @ARGV;

      , optionally in a BEGIN block. But now, actually looking at the source of Win32::Autoglob, that's just what the module does. Thanks for pointing it out to me :).

        Not sure why he does a sort. glob always returns sorted on win32.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

      That works, thanks! I must have tested it under sane OS back then. I'd like to list the complete procedure one is required to do under Windows to get Perl renaming work:

      1. Get strawberryperl, portable version is just fine (make sure that path to the strawberryperl does not have spaces!)

      2. Start strawberryperl command line. And run CPAN Win32::Autoglob (this installs the Autoglob)

      3. Copy code of above rename program to the C:\strawberryperl\perl\bin\renamer file (Windows has program called rename already, so don't use that name)

      5. Create copy of file C:\strawberryperl\perl\bin\runperl.bat as name renamer.bat (Contents of this file is not needed to change)

      6. Add use Win32::Autoglob; to the renaming code.

      Now you should have portable Perl capable renaming script to take with you.

      I know the steps I described above are routine tasks, but many times one just wants to rename files and not go through the hassle of learning to install Perl in Windows. So I wish my instruction will help someone.