#!/usr/bin/perl
use strict
print "Hello World\n"
but I can do this:
#!/usr/bin/perl
use integer
print "Hello World\n"
I can't do this:
#!/usr/bin/perl
use Lingua::Identify
print "Hello World\n"
but I can do this:
#!/usr/bin/perl
use Date::Easter
print "Hello World\n"
Exactly... what is going on around here?
Preliminary testing seemed to reveal that the reason it would only work sometimes would be that it only worked when the module version number was equal or above 1 (see * in the bottom, for the reason), but there were exceptions (strict 1.03 not working and CPAN::Mini 0.20 working, for instance).
Finding the solution would probably involve looking into the modules, which I don't think I'm able to after the day I had
This seems rather odd...
* - a sample error:
Lingua::Identify version 1 required--this is only version 0.10 at usr/lib/perl5/5.8.4/Exporter/Heavy.pm line 121.
BEGIN failed--compilation aborted at
$title =~ s/Perl/perl/ (Score:1)
consult perldoc (Score:1)
You can use an expression for VERSION, even though the manual isn't crystal clear on that. A little testing goes a long way.
print returns 1 on success, so you're trying to use that module with version 1 or more.
rjbs
Re:consult perldoc (Score:1)
But come to think about it again, what about CPAN::Mini (version 0.20) and strict?
Wait... strict was giving a different error...
I need to get some sleep... over and out, back again sometime tomorrow...
All perfectly normal, nothing to see, move along (Score:1)
It all depends on the
&importof a module.Lingua::Identify [cpan.org] uses Exporter [cpan.org] which considers the parameter a version number and croaks because it's higher than the module's.
strict [cpan.org] uses a custom importer which considers the number a non-existant pragma tag and croaks.
In case noone else defines an
&import, modules inherit&UNIVERSAL::import. Interestingly, that one does differentiate between a literal number and an expression:Re: Is this a bug i Perl? (Score:1)
usestatement.Without that you only have one statement:
#!/usr/bin/perluse strict print "Hello World\n"
The return of the print statement is 1 (unless it fails).
This effectively changes it into
use strict 1.0, whereby the module is required to be at least version 1.0Of course your code should look like this:
#!/usr/bin/perl
use strict;
print "Hello World\n";
Re: Is this a bug i Perl? (Score:1)
The part of the version one was taken care of pretty quickly [perl.org], but it took Aristotle [perl.org] to find out the reason for the exceptions [perl.org] (that is, modules below version 1 working and vice-versa).
You wouldn't believe how ashamed of myself I am for not having solved the problem before posting it... oh well, one learns new things everyday :-)
Anyway, if that's what it takes to bring a new user [perl.org] to the site, you ca