in reply to Re: The Behavior of 'do'
in thread The Behavior of 'do'

do print;

will evaluate print as the bareword name of a FILE and execute it.

do (print);

will evaluate print as a LIST and evaluate it as an EXPR, executing the print and then returning the result to do as a EXPR of 1.

do print();

will evaluate print as a SUBROUTINE and execute it.

The first two cases are the file-style do, the last is the old subroutine-style do, and the block-style do has not been shown.