[Chapter 3] 3.2.28 do
Author: Larry Wall, Tom Christiansen & Randal L. Schwartz
Date: 1999-07-02T01:48:25Z

#

| Chapter 3 Functions |

### 3.2.28 do

    do BLOCK
    do SUBROUTINE(LIST)
    do EXPR

The `do` `BLOCK` form executes the sequence of commands in the `BLOCK`, and returns the value of the last expression evaluated in the block. When modified by a loop modifier, Perl executes the `BLOCK` once before testing the loop condition. (On other statements the loop modifiers test the conditional first.)

The `do` `SUBROUTINE``(``LIST``)` is a deprecated form of a subroutine call. See "Subroutines" in Chapter 2.

The `do` `EXPR` form uses the value of `EXPR` as a filename and executes the contents of the file as a Perl script. Its primary use is (or rather was) to include subroutines from a Perl subroutine library, so that:

    do 'stat.pl';

is rather like:

    eval `cat stat.pl`;

except that it's more efficient, more concise, keeps track of the current filename for error messages, and searches all the directories listed in the @INC array. (See the section on "Special Variables" in Chapter 2.) It's the same, however, in that it does reparse the file every time you call it, so you probably don't want to do this inside a loop.

Note that inclusion of library modules is better done with the use and require operators, which also do error checking and raise an exception if there's a problem.

3.2.27 die |  | 3.2.29 dump