in reply to Re: RFC: Version::Easy
in thread RFC: Version::Easy

> You should probably clarify what problems you are actually trying to solve with this approach.

avoiding boilerplates.

> The Why eval $version? post is a long thread discussing a variety of issues.

Indeed, but if there are problems left, they could be solved inside the module.

> which was regarding a version extracted by ExtUtils::MakeMaker.

I don't understand, could you please elaborate?

edit

"version" like version.pm or like $VERSION?

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^3: RFC: Version::Easy
by Haarg (Priest) on Jul 13, 2020 at 13:39 UTC

    This module would replace the boilerplate of $VERSION =~ tr/_//d; with the new boilerplate of use Version::Easy;. This doesn't seem like a significant improvement, and adds several dependencies. use version; already accomplishes basically the same thing as this module.

    The original question was about a test that was extracting a version number using MM->parse_version. Any tool doing "static" version extraction isn't aided by a module like Version::Easy.

      > the new boilerplate of use 'Version::Easy'

      • It's far easier to explain use MODULE to a beginner
      • as already said, this could already be activated in a meta package
      • you don't need an our declaration
      • you can catch format errors right when developing
      • you can catch multiple $VERSION errors by making it readonly

      > Any tool doing "static" version extraction isn't aided by a module like Version::Easy.

      I think you were the one suggesting using tr/_// after declaration, in which way do static parsers do better with your approach?

      I think you were the one pointing to the need for developers to check $VERSION in the their tool chain, like test suite?

      An object is more robust towards comparing different formats.

      > and adds several dependencies.

      I only used core modules, and version.pm is loaded anyway in every Perl run using use.

      The dependency to Tie::StdScalar could easily be removed.

      Questions

      • I realize that MakeMaker documents that it can't parse v-strings but I can't find the code for ->parse_version and my tests show any quoted string.°
      • Who exactly calls MakeMaker? The author using a recent Perl, or the user who might be using Perl 5.8?
      • it's it possible to install a new version of MakeMaker via dependency?

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

      °) looks like v-string here means the literal v1.2.3 notation while quoted strings "v1.2.3" are ok

        "version.pm is loaded anyway in every Perl run using use."

        No, it isn't.

        $ perl -e'use strict;use warnings;CORE::say for sort keys %INC' strict.pm warnings.pm