I've got a data file with a bunch of key/value pairs in the format "key=value;". There may be only one to a line, or there may be several. I know I can figure out how to do this using split, but I thought surely there must be a more "elegant" solution. I was trying to do this using the following, but I must be misunderstanding how the "g" modifier works.
use strict; my $str1 = "foo=bar;"; my $str2 = "okey=dokey;file=a file name with spaces;yourkey=mykey;"; parsekeys($str1); parsekeys($str2); sub parsekeys { my ($str) = @_; while ($str =~ m/(.*)=(.*);/g){ print("$1,$2\n"); } } This prints: foo,bar okey=dokey;file=a file name with spaces;yourkey,mykey when what I'm really looking for is: foo,bar okey,dokey file,a file name with spaces yourkey,mykey Any help appreciated! Thanks, -Dan