in reply to subroutine question

Sure there is a difference, try this:
#!/usr/bin/perl -w use strict; foo; &foo; sub foo { print "hi\n"; }
The first call to foo: The reason is because the perl interpeter sees the call to foo BERFORE it knows about foo.

What about the second call? Well, because you precede it with an ampersand, perl knows that somewhere in the file a subroutine named foo exists. This also works if you append parens to the function name.

Jeff

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
F--F--F--F--F--F--F--F--
(the triplet paradiddle)