Was ist der wahre Zweck der Variable $ VERSION in Perl?

9

Ich habe gelesen, dass es eine gute Methode ist, immer eine $VERSION -Nummer in alle Perl-Skripte aufzunehmen, aber ich habe den Zweck nie verstanden.

Was gewinnen Sie wirklich, wenn Sie eine Versionsnummer in Ihr Skript einfügen?

    
tjwrona1992 17.11.2016, 17:12
quelle

2 Antworten

8

Nur Module und nur diejenigen, die an CPAN gesendet werden, profitieren von der Angabe von $VERSION . In einem Skript ist es nicht sehr nützlich, außer einen vertrauten Namen zu verwenden, anstatt einen neuen zu erfinden, wenn die Version des Skripts zugänglich sein soll.

Primäre Verwendungen:

  • CPAN verwendet es als die Version der Distribution, die es ermöglicht, verschiedene Versionen derselben Distribution zu indizieren.

  • cpan und cpanm verwenden es um zu prüfen, ob ein installiertes Modul ausreichend hoch ist, um die erforderliche Mindestversion einer Abhängigkeit zu erreichen.

Wie erwähnt, kann brian d foy auch von use Foo 1.23; überprüft werden, aber die meisten Menschen vermeiden dies, indem sie die erforderlichen Versionen von Abhängigkeiten in der META-Datei ihrer Distribution angeben. Dies ermöglicht cpan und cpanm , die Abhängigkeit bei Bedarf zu aktualisieren (wobei die Verwendung von use Foo 1.23; dazu führen würde, dass die Installation während des Testens fehlschlägt). Aufgrund der fehlenden Nutzung des Features ist es kaum eine primäre Verwendung.

    
ikegami 17.11.2016, 17:48
quelle
7

Sie können eine Mindestversion eines Moduls in der use -Anweisung angeben:

%Vor%

Wenn Perl dieses Modul lädt, prüft es die Variable $VERSION , um zu überprüfen, ob sie gleich oder größer als diese Zahl ist. Auf diese Weise erhalten Sie die richtigen Funktionen und Korrekturen.

Die CPAN-Clients verwenden $VERSION , um festzustellen, ob Sie auf dem neuesten Stand sind oder ob Sie die neueste Version eines Moduls installieren sollten.

Für Programme oder Skripts benötigen Sie normalerweise kein $VERSION .

    
brian d foy 17.11.2016 17:37
quelle

Tags und Links