Others have recommended the Singleton pattern, but I'm not sure if this pattern will suit you in all cases, especially when you want to use different LWP::UserAgent classes (say, LWP::UserAgent and WWW::Mechanize) with different instances of My::Main. If you only need one ::UserAgent subclass per run, then a Singleton is the thing to go with, if you need to switch the class, or supply more than one instance of My::Main with an independent LWP::UserAgent subclass (say, because of cookies), then your way 1 or way 2 are the way to go. Way 3 has the ugly problems you already discussed.
In reply to Re: Sharing objects between modules
by Corion
in thread Sharing objects between modules
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |