use warnings; use strict; use Config::General; my $string = 'to=, relay=monet1.ngv.vic.gov.au[10.10.10.20]:25, delay=0.54, delays=0.06/0.02/0/0.46, dsn=2.0.0, status=sent '; $string =~ s/, /\n/g; my $conf = Config::General->new( -String => $string ); my %hash = $conf->getall(); while( my ( $k, $v ) = each %hash ) { print "$k => $v\n"; } #### to => relay => monet1.ngv.vic.gov.au[10.10.10.20]:25 dsn => 2.0.0 status => sent delay => 0.54 delays => 0.06/0.02/0/0.46