use Data::Dumper;
my $string = '"I think" this fits "the \\"requirements presented\\" then" again \\"I could "be wrong"';
print Dumper [split /\s+(?=(?:(?:(?:[^"\\]|\\")*"){2})*(?:\\"|[^"])*$)/, $string];
####
"I think"
this
fits
1
1
again
\"I could "be
wrong"
####
I think
this
1
1
requirements
presented\
then
again
\
I could
be
wrong
####
split /\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/,$string