use strict; use warnings; use Text::xSV; my $line = 'command1 command2 command3 "command4 --some-arg arg --some-other-arg 2" command5'; open my $fh, '<', \$line; my $parser = Text::xSV->new (fh => $fh, sep => ' '); my @params = $parser->get_row (); print join "\n", @params; #### command1 command2 command3 command4 --some-arg arg --some-other-arg 2 command5