in reply to Re^3: use Text::CSV 1.13 please - if you can get it
in thread use Text::CSV 1.13 please - if you can get it

The quotes are not the problem. Windows is. The example was meant as an excercise to the reader, but that doesn't seem to work :(

perl -pi.bak -we...

will solve this specific issue, but it won't fix the way he thinks


Enjoy, Have FUN! H.Merijn

Replies are listed 'Best First'.
Re^5: use Text::CSV 1.13 please - if you can get it
by almut (Canon) on Sep 25, 2009 at 15:20 UTC
    The quotes are not the problem.

    Are you sure?   (It might not be the only problem, but I think at least one...)

    I don't have a Windows box here to try, but IIRC, ' is not treated as a special character by the Windows shell, so it just passes on the single quotes as is. IOW, the Perl program would get the string constant 's{Text::CSV}{Text::CSV_XS}g' as the code to run (instead of the substitution command without the quotes) — which is why it rightly complains "Useless use of a constant in void context".  You'd get the same error on Unix if you had typed (of course, this doesn't work on Windows either... just to illustrate what's happening):

    $ perl -pi -we"'s{Text::CSV}{Text::CSV_XS}g'" *.pl Useless use of a constant in void context at -e line 1.

      OK, not entirely correct, but to fix the problem of the error message, i- needs something more on windows:

      C:\Tmp>perl -pi -we's{Text::CSV}{Text::CSV_XS}g' xx.pm Useless use of a constant in void context at -e line 1. Can't do inplace edit without backup. C:\Tmp>perl -pi -we"s{Text::CSV}{Text::CSV_XS}g" xx.pm Can't do inplace edit without backup. C:\Tmp>perl -pi.bak -we's{Text::CSV}{Text::CSV_XS}g' xx.pm Useless use of a constant in void context at -e line 1. C:\Tmp>perl -pi.bak -we"s{Text::CSV}{Text::CSV_XS}g" xx.pm C:\Tmp>

      But I'm sure perl -e"'...'" will not work anywhere.


      Enjoy, Have FUN! H.Merijn