in reply to string parsing with split
Here's my take on the problem. It has the advantage, IMHO, of being more easily adaptable to changing requirements because it is more modular.
Notes:
>perl -wMstrict -le "my $s = 'key1=val1 key2=val2 key3=val3 key4=\"val4a val4b\" ' . 'key5=\"val5key=(0 1 2 3)\" key6=(val6a val6b)' ; ;; my $key = qr{ [[:alpha:]] [[:alnum:]]+ }xms; my $val = qr{ [[:alpha:]] [[:alnum:]]+ }xms; my $d_quo = qr{ \x22 [^\x22]* \x22 }xms; my $paren = qr{ [(] [^)]* [)] }xms; ;; my $vals = qr{ $val | $d_quo | $paren }xms; ;; my @opts = $s =~ m{ $key \s* = \s* $vals }xmsg; ;; print qq{'$s'}; print qq{'$_'} for @opts; " 'key1=val1 key2=val2 key3=val3 key4="val4a val4b" key5="val5key=(0 1 2 + 3)" key6=(val6a val6b)' 'key1=val1' 'key2=val2' 'key3=val3' 'key4="val4a val4b"' 'key5="val5key=(0 1 2 3)"' 'key6=(val6a val6b)'
|
|---|