File: Version.pm

package info (click to toggle)
libnetapp-perl 1.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 384 kB
  • ctags: 226
  • sloc: perl: 4,539; makefile: 15
file content (59 lines) | stat: -rw-r--r-- 1,245 bytes parent folder | download
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#
# $Id: Volume.pm 203 2008-06-20 18:00:43Z pmoore $
#

package NetApp::Filer::Version;

use version; $VERSION = version->new(qw$Revision: 203 $);

use strict;
use warnings;
use Carp;

use Class::Std;
use Params::Validate qw( :all );
use Data::Dumper;

use overload '""' => 'get_string';

{

    my %string_of	:ATTR( get => 'string' );

    my %release_of	:ATTR( get => 'release' );

    my %major_of	:ATTR( get => 'major' );
    my %minor_of	:ATTR( get => 'minor' );
    my %subminor_of	:ATTR( get => 'subminor' );
    my %patchlevel_of	:ATTR( get => 'patchlevel' );

    my %date_of		:ATTR( get => 'date' );

    sub BUILD {

        my ($self,$ident,$args_ref) = @_;

        my @args = %$args_ref;

        my (%args) 	= validate( @args, {
            string	=> { type	=> SCALAR },
        });

        $string_of{$ident}	= $args{string};

        $args{string} =~
            m{ NetApp \s+ Release \s+ (\S+) : \s+ (.*) }gmx ||
                   croak ("Invalid version string: $args{string}\n");

        $release_of{$ident}	= $1;
        $date_of{$ident}	= $2;

        ( $major_of{$ident}, 	$minor_of{$ident},
          $subminor_of{$ident},	$patchlevel_of{$ident} ) =
              split( /[\.L]+/, $release_of{$ident} );

    }

}

1;