On Aug 4, 2004, at 12:42 PM, Yitzchak Scott-Thoennes wrote:
On Wed, Aug 04, 2004 at 12:13:17PM -0500, Ken Williams
<ken@xxxxxxxxxxxxx> wrote:
But I don't see any breakage at all, unless you count an extra warning
under -w as breakage:
% perl -le '$Foo::VERSION="2.03_01"; Foo->VERSION(2.03); print "Got
here"'
Got here
% perl -le '$Foo::VERSION="2.03_01"; Foo->VERSION(2.04); print "Got
here"'
Foo version 2.04 required--this is only version 2.03_01 at -e line
1.
Looks fine, no? Is there some other "breakage", besides the warning,
that I'm not aware of?
Yes! "2.03_01" in numeric context is 2.03, and that's what version
will be checked against, leading to this:
Yes, you're right, of course. If I had done things correctly, I should
have had the 'eval' line in M::B, and I'll make this correction for
future beta versions (assuming I remember...).
Note, however, that like PAUSE and MakeMaker, M::B also has to deal
with a bunch of other people's $VERSION variables, and only parse the
*first* line mentioning it. So in these cases we will indeed be using
bona-fide strings, potentially with underscores and other junk in them,
as versions. This is a different issue than the ones we've been
discussing, but since we've opened the whole versioning can of worms,
and since (I think) this is the issue that originally led Trevor to
find problems in what M::B does, I thought I'd mention it.
Perhaps I'll have to give up and use version.pm to do the version
parsing/comparing, but I really want to avoid that, since it would be
the first non-core-5.6 module M::B requires.
-Ken
-------------------------------------------------------
This SF.Net email is sponsored by OSTG. Have you noticed the changes on
Linux.com, ITManagersJournal and NewsForge in the past few weeks? Now,
one more big change to announce. We are now OSTG- Open Source Technology
Group. Come see the changes on the new OSTG site. www.ostg.com
|