Perl problem: When you don’t use Perl every day, it’s hard to remember the combination of the for loop syntax and how to deal with the special $_ variable to refer to each element within the body of the loop.
Solution: As I write this today, I still can’t remember how to get this for loop and $_ syntax to work, at least not without pulling out a book, or looking it up on the internet. A much better solution is to just use Perl’s foreach syntax, and never look back.
Discussion
I just spent a few minutes trying to get the following Perl for loop to work, and got frustrated at wasting my time. As a warning, this code still does not work:
@files = qw(/foo/bar/file.pdf /foo/baz/file2.jpg);
# ERROR: I can't remember how to work with $_ in the following for loop
for (@files)
{
# exclude any files in the /foo/bar hierarchy
# this doesn't work because $_ is not getting assigned the way i expected ... argh ...
next if /bar/;
# print all other files
print "$file\n";
}
The foreach loop fix
Fortunately just at that time my brain kicked in and said, “Quit screwing around with the for loop syntax, and just use the foreach syntax.” Fortunately I took my brain’s advice, and fixed the code like this, using the foreach syntax:
@files = qw(/foo/bar/file.pdf /foo/baz/file2.jpg);
foreach $file (@files)
{
# exclude any files in the /foo/bar hierarchy
next if $file =~ /bar/;
# print all other files
print "$file\n";
}
Note that in this example I don’t have to deal with the $_ variable. I just assign $file to each element in the @files array, and then refer to $file from within the body of the foreach loop.
Summary
As of today, I have no plans to ever use the Perl for operate ever again, certainly not in a situation like this. I can't remember the “special” syntax, unless I use Perl all the time, which I don’t any more. And the foreach loop syntax is much more readable.

