1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use strict;
use warnings;
use 5.020;
our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.12.123 $ =~ /(\d+)\.(\d+)\.(\d+)/;
say "Version ist: $VERSION";
our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.02.333 $ =~ /(\d+)\.(\d+)\.(?:\d+)/;
1 2 3 4 5 6 7 8 9
#! /usr/bin/perl use strict; use warnings; use 5.020; no warnings qw( redundant ); our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.12.123 $ =~ /(\d+)\.(\d+)\.(\d+)/; say "Version ist: $VERSION";
1
2
3
4
5
6
perl -We "print sprintf 'v.%02d.%03d', q | Revision 1.12.123 | =~ /(\d+)\.(\d+)\.(\d+)/"
Redundant argument in sprintf at -e line 1.
v.01.012
perl -We "print sprintf 'v.%02d.%02d.%03d', (q | Revision 1.12.123 | =~ /(\d+)\.(\d+)\.(\d+)/)"
v.01.12.123
my $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
2018-04-02T09:49:27 GwenDragonMag ja sein, aber wo ist jetzt bei dir die physikalische Versionsnummer?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
RCS - Revision Control System dient in erster Linie dazu Versionen von Dateien auf UNIX/LINUX Systemen zu verwalten. Füge im Script die folgende Zeile ein:
my $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
Nach einem Checkin (ci -l scriptname) und Checkout (co -l scriptname) wird sich diese Zeile ändern z.B. wie folgt:
my $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
Bei jedem nun folgenden Checkin und Checkout ändert sich diese Zeile automatisch. Dabei ist 1.1 die *Initialversion* welche vom RCS hochgezählt wird:
my $VERSION = do { my @r = (q$Revision: 1.2 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
Auf die Variable $VERSION kann dann im Script zugegriffen werden. Angezeigt wird eine Version 1.2 als Version 1.02 (aufgrund der Formatierung).
Ergänzung:
# $Id$
# $Log$
sind weitere für RCS wichtige Variablen die vor dem ersten Checkin angelegt werden sollten.
Hierin stehen für das RCS weitere Informationen like this:
# RCS
# $Id: umg.cgi,v 1.4 2003/02/25 12:25:26 root Exp root $
# $Log: umg.cgi,v $
# Revision 1.4 2003/02/25 12:25:26 root
# Versionsinfo eingebaut.
#
# Revision 1.3 2003/02/25 12:20:22 root
Version eines Moduls anzeigen:
perl -e "use CGI; print $CGI::VERSION"
2018-04-02T09:14:59 rostiDas kann gehen. Erzeugt aber leider nicht immer das Erwünschte.Code (perl): (dl )my $VERSION = do { my @r = (q$Revision$ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
our $VERSION = sprintf 'v.%02d.%03d', q $ Revision 1.12.123 $ =~ /(\d+)\.(\d+)\.(\d+)/;