foreach expression command|command-or-block foreach [my|local] $variable in expression command|command-or-block




Evaluate given expression to a node-list and for each resulting node execute given command or command-or-block. If used without a loop $variable, the loop temporarily sets current node to the node being processed. Otherwise, the processed node is assigned to the loop variable.

The expression may be xpath as well as a perl-code. In the latter case, if used without a loop variable, the loop automatically converts Perl objects to nodes. No conversion is performed when a loop variable is used.

Example 30. Move all employee sub-elements in a company element into the first staff subelement of the same company

xsh> foreach //company xmove employee into staff[1];

Example 31. List content of all XML files in current directory

xsh> foreach my $filename in { glob('*.xml') } {
  $f := open $filename;
  do_something $f;