NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
What that is... (Score:1)
DateTime::Locale needs to call stuff as a method, not a function.
Re: (Score:2)
Re: (Score:1)
Compare:
$ foo->isa('UNIVERSAL') and print "yes\n"
<nothing>
to
$ package foo;
$ foo->isa('UNIVERSAL') and print "yes\n"
yes
I think U::can might get upset in this case... but who knows.
Another possibility... didn't that line use can as a function in an older version of the module? I can't get the warning to happen with the latest DateTime::Locale, but I could about a year ago.
Re: (Score:1)
$ use UNIVERSAL::can;
$ UNIVERSAL->can('can') and print "can can\n";
can can
$ FOOBAR->can('can') or print "cannot can\n";
Called UNIVERSAL::can() as a function, not a method at (eval 59) line 5
cannot can
$ package FOOBAR;
$ FOOBAR->can('can') and print "now can can\n";
now can can
Re: (Score:2)
canis a way to check if the module has been loaded. It's quicker than blindly usingrequirein every case, I think.That smells like a really bad idea (Score:1)
Furthermore pity the poor programmer who has to figure out your code. Do you always put comments on your uses of that idiom? If not, then will it make sense to someone else that you're checking whether something can can when it should always be able to can? It wouldn't to me!
It is far safer to write a function to do your test. That function can either check %INC directly or can walk the symbol table. (Walking the symbol table is closer to what calling the can method is.) Then you can just write is_loaded("class") and your code is more self-documenting, and is less likely to break in a future version of Perl.
Reply to This
Parent
Re: (Score:1)
I'll just go hide in a corner then.