in reply to Re: Splitting a line on just commas
in thread Splitting a line on just commas

Ouch! Misusing split, which you attempt to fix by filtering out empty strings, which leads to warnings and the removal of empty fields.

Thing being separated vvvvvvv /(?:\,|(\".*?\"))/ ^^ Separator

How are those two things on equal footing?

Replies are listed 'Best First'.
Re^3: Splitting a line on just commas
by deMize (Monk) on Jun 14, 2010 at 17:51 UTC
    Response: I was about to say, you might want to remove all the undefined created by the unmatched parens, before removing the blank fields.
    @values = grep{defined} @values; @values = grep{$_ ne ''} @values;
    or
    @values = grep{defined && $_ ne ''} @values;
    Again, I would not use this method. It's not good to remove blank string values. As for the equal footing, would this be any less equal: /(?:\,)|(\".*?\")/

    Update: I did forget to include the trailing comma after the quotes, but I still wouldn't use it: /\,|(?:(\".*?\")\,)/


    Demize
      The point is that there's no point if removing the extra stuff if you extract the fields right in the first place. It's already been shown how to do that.
        The proper extraction method has not been shown, Anonymous came closest, but as stated, it's still a problem. He used a 2-step method, which I think the most of us were trying to solve in one step, though using [^"]* rather than .*, is necessary.


        Demize