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

But, having said that, I have tried my code as you suggest and still get no results.

cat file | perl -e "while (<>) { push @a, $_; } print join(',',@a);"

Ed

Replies are listed 'Best First'.
Re: Re: &bull;Re: perl 1-liner to join a list?
by Enlil (Parson) on Nov 11, 2003 at 21:48 UTC
    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

      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

        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