in reply to split on newline

Although ikegami has provided a much shorter and better solution, I would like to come back to your very complicated syntax and suggest some possible improvements to the rest of your code. Using chomp, you could do this:
$ perl -e '@words = ("one\n","two\n","three\n","four\n","five\n","six\ +n",); chomp @words; print join";", @words;' one;two;three;four;five;six
Although I would not really recommend this, you could also use split if you really wanted to:
$ perl -e '@words = ("one\n","two\n","three\n","four\n","five\n","six\ +n",); @words = map {split /\n/, $_ } @words; print join";", @words;' one;two;three;four;five;six
Or perhaps a regex:
$ perl -e '@words = ("one\n","two\n","three\n","four\n","five\n","six\ +n",); @words = map {s/\n//; $_} @words; print join";", @words;' one;two;three;four;five;six
Or split again, but without a map this time:
$ perl -e '@words = ("one\n","two\n","three\n","four\n","five\n","six\ +n",); $_ = (split /\n/)[0] for @words; print join";", @words;' one;two;three;four;five;six
Or, if you don't want to use the join function:
$ perl -E '@words = ("one\n","two\n","three\n","four\n","five\n","six\ +n",); local $" = ";"; $_ = (split /\n/)[0] for @words; say "@words";' one;two;three;four;five;six
Well, I could probably offer at least a dozen other solutions mixing the various ideas above or introducing new ones, but I hope you get the idea of how to do the things in a much more concise way than what you had.

Replies are listed 'Best First'.
Re^2: split on newline
by johngg (Canon) on Sep 12, 2014 at 22:24 UTC

    You could save yourself some typing when initialising @words by using a HEREDOC and split with a look-behind.

    $ perl -Mstrict -Mwarnings -E ' my @words = split m{(?<=\n)}, <<EOL; one two three EOL say qq{$_-----} for @words;' one ----- two ----- three ----- $

    So, taking the whole thing together.

    $ perl -Mstrict -Mwarnings -E ' say join q{;}, map { chomp; $_ } split m{(?<=\n)}, <<EOL; one two three EOL' one;two;three $

    I hope this is of interest.

    Update: Removed the $PS2 prompts fromthe second example for easier copy'n'paste.

    Cheers,

    JohnGG