Not really a function. Returns the value of the last command in the sequence of commands indicated by BLOCK. When modified by a loop modifier, executes the BLOCK once before testing the loop condition. (On other statements the loop modifiers test the conditional first.) do BLOCK does not count as a loop, so the loop control statements next, last, or redo cannot be used to leave or restart the block. See the perlsyn manpage for alternative strategies.