use Data::Dumper;
$_ = 'command1 --max-size=2M a=ignore =ignore --switch --type="some value" --x= --z=1';
my %args;
while (/((?<=\s--)[a-z\d-]+)(?:="?|(?=\s))((?<![="])|(?<=")[^"]*(?=")|(?<==)(?!")\S*(?!"))"?(?=\s|$)/ig) {
$args->{$1} = $2;
}
dXNlIERhdGE6OkR1bXBlcjsKJF8gPSAnY29tbWFuZDEgLS1tYXgtc2l6ZT0yTSBhPWlnbm9yZSA9aWdub3JlIC0tc3dpdGNoIC0tdHlwZT0ic29tZSB2YWx1ZSIgLS14PSAtLXo9MSc7Cm15ICVhcmdzOwp3aGlsZSAoLygoPzw9XHMtLSlbYS16XGQtXSspKD86PSI/fCg/PVxzKSkoKD88IVs9Il0pfCg/PD0iKVteIl0qKD89Iil8KD88PT0pKD8hIilcUyooPyEiKSkiPyg/PVxzfCQpL2lnKSB7CiAgJGFyZ3MtPnskMX0gPSAkMjsKfQpwcmludCBEdW1wZXIoJGFyZ3MpOw==