| Keywords related to control flow of your perl programTurn a BLOCK into a TERMDaftar Isi - do BLOCK
Not really a function. Returns the value of the last command in thesequence of commands indicated by BLOCK. When modified by the while oruntil loop modifier, executes the BLOCK once before testing the loopcondition. (On other statements the loop modifiers test the conditionalfirst.) do BLOCK does not count as a loop, so the loop control statementsnext , last , or redo cannot be used to leave or restart the block.See perlsyn for alternative strategies.
- do EXPR
Uses the value of EXPR as a filename and executes the contents of thefile as a Perl script. - do 'stat.pl';
is just like - eval `cat stat.pl`;
except that it's more efficient and concise, keeps track of the currentfilename for error messages, searches the @INC directories, and updates%INC if the file is found. See @INC in perlvar and %INC in perlvar forthese variables. It also differs in that code evaluated with do FILENAME cannot see lexicals in the enclosing scope; eval STRING does. It's thesame, 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. If do can read the file but cannot compile it, it returns undef and setsan error message in $@ . If do cannot read the file, it returns undefand sets $! to the error. Always check $@ first, as compilationcould fail in a way that also sets $! . If the file is successfullycompiled, do returns the value of the last expression evaluated. Inclusion of library modules is better done with theuse and require operators, which also do automatic error checkingand raise an exception if there's a problem. You might like to use do to read in a program configurationfile. Manual error checking can be done this way: - # read in config files: system first, then user
- for $file ("/share/prog/defaults.rc",
- "$ENV{HOME}/.someprogrc")
- {
- unless ($return = do $file) {
- warn "couldn't parse $file: $@" if $@;
- warn "couldn't do $file: $!" unless defined $return;
- warn "couldn't run $file" unless $return;
- }
- }
|
| |
|