Frequently I need to run a process for each item in a list, stored in a text file one item per line: usernames, filenames, e-mail addresses, etc. Obviously there are more than 3 ways to do this, but here are 3 I have found useful:
Bash
sh prog1.sh list.txt
Source: prog1.sh
while read line
do
echo $line
done < $1
4 lines. Not bad.
Perl
perl prog2.pl list.txt
Source: prog2.pl
while(<>) {
print `echo $_`;
}
3 lines. Pretty good.
Perl -n
perl -n prog3.pl list.txt
Source: prog3.pl
print `echo $_`;
1 line! The -n switch basically wraps your Perl code in a loop that processes each line of the input file. I just discovered this while flipping through my 17-year-old copy of Programming Perl (link is to a newer edition).
I really like this method because you can write a script that processes a single input that could easily be reused by another script, but can also easily be used to process an entire list by adding just the -n switch. (There’s also a similar -p switch that does the same thing, but additionally prints out each line.)
I should note that in the examples above, I am using echo as a substitute for any command external to the script itself. In the Perl examples, there would be no need to call echo to merely print the contents of the line, but it’s a convenient stand-in for a generic command.
As suggested by a comment on a previous post, I have made these examples available in a git repository: iterate over lines.
One of the great things about WordPress is the one-click upgrade procedure. It’s particularly convenient, because WordPress has frequent upgrades and security updates. Without an easy way of upgrading, many users would complain of upgrade fatigue, or would continue running older versions with security flaws.