Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^4: RFC: Version::Easy

by LanX (Saint)
on Jul 13, 2020 at 21:17 UTC ( [id://11119271]=note: print w/replies, xml ) Need Help??


in reply to Re^3: RFC: Version::Easy
in thread RFC: 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

Replies are listed 'Best First'.
Re^5: RFC: Version::Easy
by tobyink (Canon) on Jul 14, 2020 at 19:56 UTC

    "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
      > No, it isn't.

      Something is ...

      ... running B::Xref on a minimalist script shows the namespace being magically populated

      t_float.pl (definitions) 0 version & ("" + subdef t_float.pl (definitions) 0 version & () + subdef t_float.pl (definitions) 0 version & (* + subdef t_float.pl (definitions) 0 version & (*= + subdef t_float.pl (definitions) 0 version & (+ + subdef t_float.pl (definitions) 0 version & (+= + subdef t_float.pl (definitions) 0 version & (- + subdef t_float.pl (definitions) 0 version & (-= + subdef t_float.pl (definitions) 0 version & (/ + subdef t_float.pl (definitions) 0 version & (/= + subdef t_float.pl (definitions) 0 version & (0+ + subdef t_float.pl (definitions) 0 version & (<=> + subdef t_float.pl (definitions) 0 version & (abs + subdef t_float.pl (definitions) 0 version & (bool + subdef t_float.pl (definitions) 0 version & (cmp + subdef t_float.pl (definitions) 0 version & (nomethod + subdef t_float.pl (definitions) 0 version & _VERSION + subdef t_float.pl (definitions) 0 version & boolean + subdef t_float.pl (definitions) 0 version & declare + subdef t_float.pl (definitions) 0 version & is_alpha + subdef t_float.pl (definitions) 0 version & is_qv + subdef t_float.pl (definitions) 0 version & new + subdef t_float.pl (definitions) 0 version & noop + subdef t_float.pl (definitions) 0 version & normal + subdef t_float.pl (definitions) 0 version & numify + subdef t_float.pl (definitions) 0 version & parse + subdef t_float.pl (definitions) 0 version & qv + subdef t_float.pl (definitions) 0 version & stringify + subdef t_float.pl (definitions) 0 version & vcmp + subdef t_float.pl (main) 3 float $ VERSION + intro

      d:\exp\version>type t_float.pl package float; our $VERSION = 'v1.0234'; d:\exp\version>

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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11119271]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2024-04-24 07:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found