[ale] One for the perl hackers

Scott McBrien smcbrien at gmail.com
Fri Oct 4 10:54:29 EDT 2013


You could do something like split into a temp array, scalar the array and if it's not the size you expect, you know your third item had one or more commas.  Make your variable assignments for items one and two, then for component 4 (back of the array), you could even use pop and shift for this, then join the remaining elements of the array back together with commas and make your last variable assignment.

-Scott

> On Oct 4, 2013, at 10:19 AM, Erik Mathis <erik at mathists.com> wrote:
> 
> Even if you escape the comma, its still goin to slip in the comma.
> 
> I'd just remove the comma, or change it to something else.
> 
> #!/usr/bin/perl -w
> use Data::Dumper;
> $String='component1,component2,"This is my, test string", component4';
> print $String,"\n";
> $String =~  s|"(.+),(.+)"|$1$2|;
> print $String,"\n";
> print Dumper split(',', $String);
> 
> emathis at emathis-lappy:~$ perl /tmp/123.pl 
> component1,component2,"This is my, test string", component4
> component1,component2,This is my test string, component4
> $VAR1 = 'component1';
> $VAR2 = 'component2';
> $VAR3 = 'This is my test string';
> $VAR4 = ' component4';
> 
> 
> 
>> On Thu, Oct 3, 2013 at 6:08 PM, Jim Kinney <jim.kinney at gmail.com> wrote:
>> Unless you have a magical way to escape the comma inside the quoted string, you're stuck. sed 's/\(".\+\),\(.\+"\)/\1\\,\2/g' file. Assuming all intermediate strings will be double quoted.
>> 
>> Might try splitting to an array instead of individual string vars. Then you can do a length test to see if you got something "extra".
>> @strings = split(',' , $String);
>> 
>> Be sure to empty the array after each run or loop it as a local variable created each pass.
>> 
>> 
>> 
>>> On Thu, Oct 3, 2013 at 5:22 PM, Robert L. Harris <robert.l.harris at gmail.com> wrote:
>>> 
>>> *Sorry for the OT but my only perl lists have gone dark a long time ago*
>>> 
>>> 
>>> $String='component1,component2,"This is my, test string", component4';
>>> 
>>> ($C1, $C2, $Str, $C4) = split(',', $String);
>>> 
>>> I'm only getting "This is my" in $Str and $C4 does not contain "component4".  Is there a graceful way of handling this?  It's a 1 in 10000 chance it'll break but accuracy counts.
>>> 
>>> Robert
>>> 
>>> 
>>> -- 
>>> :wq!
>>> ---------------------------------------------------------------------------
>>> Robert L. Harris
>>> 
>>> DISCLAIMER:
>>>       These are MY OPINIONS             With Dreams To Be A King,
>>>        ALONE.  I speak for                      First One Should Be A Man
>>>        no-one else.                                     - Manowar
>>> 
>>> _______________________________________________
>>> Ale mailing list
>>> Ale at ale.org
>>> http://mail.ale.org/mailman/listinfo/ale
>>> See JOBS, ANNOUNCE and SCHOOLS lists at
>>> http://mail.ale.org/mailman/listinfo
>> 
>> 
>> 
>> -- 
>> -- 
>> James P. Kinney III
>> 
>> Every time you stop a school, you will have to build a jail. What you gain at one end you lose at the other. It's like feeding a dog on his          own tail. It won't fatten the dog.
>> - Speech 11/23/1900 Mark Twain
>> 
>> http://heretothereideas.blogspot.com/
>> 
>> _______________________________________________
>> Ale mailing list
>> Ale at ale.org
>> http://mail.ale.org/mailman/listinfo/ale
>> See JOBS, ANNOUNCE and SCHOOLS lists at
>> http://mail.ale.org/mailman/listinfo
> 
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20131004/91487236/attachment-0001.html>


More information about the Ale mailing list