In Statement prefixes§
See primary documentation in context for do.
do can be used as a statement prefix to disambiguate the statement they precede; this is needed, for instance, if you want to assign the result of a for statement. A bare for will fail, but this will work:
my $counter = 0; my $result = do for ^5 { $counter++ }; say $counter; # OUTPUT: «5» say $result; # OUTPUT: «(0 1 2 3 4)»
do is equivalent, as in other cases, to surrounding a statement with a parenthesis. It can be used as an alternative with a (possibly more) straightforward syntax.