http://qs321.pair.com?node_id=947269


in reply to split string by comma

Using a module as GrandFather suggests is probably the safest option. However, just to show another way with this particular data, you could use the third argument to split in order to work in from either end.

knoppix@Microknoppix:~$ perl -E ' > $_fileline = q{1945,"4,399.00",938,1/10/2012}; > ( $_fileparts[ 0 ], $remainder ) = split m{,}, $_fileline, 2; > push @_fileparts, > reverse > map scalar reverse, > split m{,}, reverse( $remainder ), 3; > say for @_fileparts;' 1945 "4,399.00" 938 1/10/2012 knoppix@Microknoppix:~$

I hope this is of interest.

Update: Assigning to an array slice avoids the final reverse.

knoppix@Microknoppix:~$ perl -E ' > $_fileline = q{1945,"4,399.00",938,1/10/2012}; > ( $_fileparts[ 0 ], $remainder ) = split m{,}, $_fileline, 2; > @_fileparts[ 3, 2, 1 ] = > map scalar reverse, > split m{,}, reverse( $remainder ), 3; > say for @_fileparts;' 1945 "4,399.00" 938 1/10/2012 knoppix@Microknoppix:~$

Cheers,

JohnGG