On Sep 1, 2011, at 3:35 AM, John Peacock wrote:
>> meta {
>> name is 'generator';
>> content is 'PGXN::Manager ' . PGXN::Manager->VERSION;
>> };
>
> Just as an aside, using UNIVERSAL::VERSION in this fashion worked like this up until Perl 5.10.0, meaning if the module in question used a v-string for its $VERSION scalar, the output was not printable without work.
>
> Here is the original discussion for your perusal:
>
> http://www.nntp.perl.org/group/perl.perl5.porters/2011/06/msg173710.html
So let me see if I understand this correctly. Starting with Perl 5.10, UNIVERSAL::VERSION returned a version object that, when used in a string context, stringified to its original, declared form (which for vstrings meant sprintf "v%vd"). But in bleed and version.pm 0.92-0.94, UNIVERSAL::VERSION now returns exactly the same value as $Foo::VERSION. Which kind of obviates the use of UNIVERSAL::VERSION when called with no arguments, no?
I think if I had noticed this thread before I would have argued with David Golden about this point. It seems to me that a version object is far more useful in general than whatever crap happened to be put into $VERSION -- and the latter can be fetched directly, anyway.
Father C said the original bug was this code, which worked in 5.8 but broke in 5.10;
$VERSION = "3alpha";
sub VERSION {
my $version = shift->SUPER::VERSION;
if(@_) {
.... do custom comparison ....
die $message if $too_old
}
$version
}
I can see that, since the version isn't a valid version object value. But how often was this complained of? I mean, I dunno, this seems to me more like one of those areas where backward compatibility is maintained despite the fact that folks made lousy version number decisions.
OTOH, I suppose you might be thinking I'm making a poor choice using vstrings for versions.
/me shrugs. Version stuff sucks. Guess I'll add this method to my class:
sub VERSION {
my $self = shift;
return $self->SUPER::VERSION(@_) if @_;
return verson->parse($version);
}
BTW, was the awful behavior of having base.pm set $VERSION to -1 been fixed?
Best,
David
Best,
David