I used split to parse a simple comma-delimited text string (i.e. no embedded commas, no quoted values, etc) into an array variable and the last values in the text string were all null. It is important for my process to maintain the null (or undefined) entries in the array, however it appears that split does not create array entries (even undef entries) for trailing null entries in the text string. This is not at all the behavior I expected from split and I can find no way to work around it, other than appending a throw-away character to the end of the text string prior to splitting it, which seems awfully kludgey. I tried adding a limit number equal to the total number of entries I expected (including the trailing null entries), but it had no effect. Can anyone shed some light on split's behavior and/or suggest a cleaner work around? Thanks in advance. Sample code follows ...

#!/usr/bin/perl -w use strict; my $txt = 'a,b,c,d,,,,,,'; my @fld = split(/,/,$txt); print "\$txt = |$txt|\n"; print "\@fld = |@fld|\n"; for (0 .. $#fld) {print "\$fld\[", $_, "\] = |$fld[$_]|\n"}; __END__ Results: -------- $txt = |a,b,c,d,,,,,,| @fld = |a b c d| $fld[0] = |a| $fld[1] = |b| $fld[2] = |c| $fld[3] = |d|

"Its not how hard you work, its how much you get done."


In reply to Fooled By Split by roho

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.