Here's a pleasantly futile task which should help you while away a few hours when you've got nothing better to do.

Can anyone explain this to me, in a manner that I can understand, please?

Why does this:

my $var; my @vars = qw(one two three); for $var (@vars) {subroutine()}; sub subroutine {print "var is $var\n"};
[download]
Give:
var is
var is
var is
Yet this:
my $var; my @vars = qw(one two three); for (@vars) {$var = $_; subroutine()}; sub subroutine {print "var is $var\n"};
[download]
Gives this:
var is one
var is two
var is three

It's making my head hurt! :-)