I use it any time I would have used "use vars" in the past - to access package globals. The nice thing is that I can scope where that access is legal. So, if I've got a package global %CACHE and two routines read_cache and write_cache I can:
sub read_cache {
our %CACHE;
...
}
sub write_cache {
our %CACHE;
...
}
And they'll access the same variable. But if I start refering to %CACHE inside some other routine I get an error just like if %CACHE had been a lexical. I like that.
So, I guess I'm pretty happy with our. The only reason I want more education is that I learned about lexical and package variables as totally separate!!! and now they ain't... Which is cool, but also pretty bizarre.
-sam
|