in reply to parent::versioned supports minimum version specification in parent classes
Another way:package MyAgent; use parent 'LWP::UserAgent'; BEGIN {LWP::UserAgent->VERSION(6.39)}But that's a little fragile; someone may refactor and forget to keep the BEGIN block after the call to parent causing things blow up. Sometimes code becomes complex, masking simple mistakes. I would prefer a solution that doesn't require the user to maintain several steps to set up inheritance while assuring minimal versions for parent classes.
I only now noticed this and must ask: how does this scenario cause things to blow up? Someone moving the BEGIN to before use parent? Even the most basic tests should catch that immediately.
TIMTOWDI:
use LWP::UserAgent 6.39; use parent 'LWP::UserAgent';
That makes an extra require but perl will check %INC, see that LWP::UserAgent has already been loaded, and proceed quickly. Normal style is that object-oriented modules export nothing, so the implicit ->import call should be harmless.
I believe that parent::versioned is the kind of feature that really does belong in the core or not at all — the TIMTOWDIs for it are just too simple to justify another dependency from CPAN for serious work, and it is the kind of feature that non-serious work does not care about.
|
|---|