[perl]my $foo = 13;
our $bar = 7;
BEGIN {
...code...
}[/perl]
ok, inside the BEGIN block it won't recognise $foo. This I get. However the thing that's annoying me, it will see $bar, but it won't yet have been assigned it's value of 7?
Is there a way to do this without sticking the definition inside the BEGIN block?
Maybe the answer is in here:
#!/usr/bin/perl
# begincheck
#
print "10. Ordinary code runs at runtime.\n";
#
END { print "16. So this is the end of the tale.\n" }
#
INIT { print " 7. INIT blocks run FIFO just before runtime.\n" }
#
UNITCHECK { print " 4. And therefore before any CHECK blocks.\n" }
#
CHECK { print " 6. So this is the sixth line.\n" }
#
print "11. It runs in order, of course.\n";
#
BEGIN { print " 1. BEGIN blocks run FIFO during compilation.\n" }
#
END { print "15. Read perlmod for the rest of the story.\n" }
#
CHECK { print " 5. CHECK blocks run LIFO after all compilation.\n" }
#
INIT { print " 8. Run this again, using Perl's -c switch.\n" }
#
print "12. This is anti-obfuscated code.\n";
#
END { print "14. END blocks run LIFO at quitting time.\n" }
#
BEGIN { print " 2. So this line comes out second.\n" }
#
UNITCHECK { print " 3. UNITCHECK blocks run LIFO after each file is compiled.\n" }
#
INIT { print " 9. You'll see the difference right away.\n" }
#
print "13. It merely _looks_ like it should be confusing.\n";
#
__END__from:
[perldoc.perl.org...]
Looks like maybe I should change this to an INIT block, by that time compilation should be complete.
I'll give it a go and report back.