#! /usr/bin/perl my $string = q/allow:test1,"@test 2 " deny:test3,test4 password:"123 456"/; while ($string =~ s/(\w+):(.*?)($|(?=\w+:))//) { print "Argument: $1\n"; my @params = split /,/,$2; print " Param: $_\n" foreach (@params); }