As per BrowserUK, for scripts I put subroutines first, then the main routine at the bottom. Here's roughly how your script would look with my formatting:
#!/usr/bin/env perl
use strict;
use warnings;
# Script variables
our $Foo = 'bar';
# Subroutines
sub say_hello {
my ($name) = @_;
print "Hello $name\n";
}
{
# Main routine
my ($name, $greeted) = @ARGV;
$name //= 'Horace!';
$greeted //= 'world';
say_hello($greeted);
}
I don't see any value in having a subroutine called main which is then called once after being defined. (In fact, I find it distinctly *odd*. Personal preference.)
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds