my $cmd = q|&COMPAREEQUAL(First-param.one, Second.param,Third-param)|; if ($cmd =~ /^&([^(]+)\(([^)]+)\)$/) { my $sub = $1; my @args = split /,\s*/,$2; print Dumper [ $sub, \@args ]; } __END__ $VAR1 = [ 'COMPAREEQUAL', [ 'First-param.one', 'Second.param', 'Third-param' ] ];