in reply to Re: •Re: perl 1-liner to join a list?
in thread perl 1-liner to join a list?

Try switching the double quotes for single quotes, and the single quotes for double quotes.

Here is yet another way to do it:

perl -le 'print join ",",map{chomp;$_}<>' file

-enlil

Replies are listed 'Best First'.
Re^4: perl 1-liner to join a list?
by Nkuvu (Priest) on Nov 11, 2003 at 22:10 UTC
    That's OS dependent. On Win2K I get the error "> was unexpected at this time." using the switched quotes as you provided. (But perl -le "print join ',',map{chomp;$_}<>" file works just fine)

      It's not really OS dependent so much as shell dependent. Windows' "command.exe" or "cmd.exe" uses double-quotes as string delimiters, whereas most other shells use double-quotes as an interpolating delimiter and single-quotes as non-interpolating. On those shells, you'd almost always want to use single-quotes with a Perl one-liner so something like $var isn't interpreted by the shell itself, as it would be in double-quotes. With Windows, you have to use double-quotes because that's all it recognizes, so you'd need to switch any quote marks inside those to single quotes. Or just use bash with Cygwin.

      kelan


      Perl6 Grammar Student

        It's not really OS dependent so much as shell dependent.
        Yes, that's what I meant. Isn't PM supposed to be RWIM (read what I mean)?
      I get the same type of error on Windows, but currently I assumed (and perhaps erroneously), that since he was using cat that he was not working at a windows/dos command (cmd) prompt, but rather a *nix one (or cygwin on windows, perhaps). So switching the quotes would/should have helped.

      -enlil