The delta release of Perl 5.005 introduced a new syntax for the foreach loop, which allows for more flexible iteration over arrays and hashes.
The new syntax is:
foreach EXPR (LIST) BLOCK
Here, EXPR is an optional expression that is evaluated once, before the loop begins. LIST is an expression that evaluates to a list of values that the loop will iterate over. BLOCK is a block of code that is executed once for each value in the list.
For example, the following code uses the new syntax to iterate over a hash:
perl
Copy code
my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) {
print "$key: $hash{$key}\n";
}
In this example, EXPR is not used, LIST is the list of keys in the %hash hash, and BLOCK prints out each key-value pair.
Note that the old syntax for foreach loops is still supported:
foreach VAR (LIST) BLOCK
This syntax is equivalent to the new syntax when VAR is a scalar variable. However, the new syntax allows for more flexibility when iterating over arrays and hashes.