Bonjour,

Je n'arrive pas à comprendre pourquoi mon hash ne se rempli pas comme il faudrait.

Le contenu de mon "fichier" :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
@lines = (
 
"v  vol1 -          ENABLED  ACTIVE   10485760 SELECT    -        fsgen",
"pl vol1-01 vol1 ENABLED ACTIVE 10485760 CONCAT -       RW",
"sd disk03-03 vol1-01 disk03 0  4194304  0         DMX_0574_4 ENA",
"sd disk03-04 vol1-01 disk03 12443648 6291456 4194304 DMX_0574_4 ENA ",
"pl vol1-02 vol1 ENABLED ACTIVE 10485760 CONCAT -       RW",
"sd disk04-03 vol1-02 disk04 0  4194304  0         DMX_0621_4 ENA",
"sd disk04-04 vol1-02 disk04 12443648 6291456 4194304 DMX_0621_4 ENA" ,
" " ,
"v  vol2 -           ENABLED  ACTIVE   499712   SELECT    -        fsgen" ,
"pl vol2-01 vol2 ENABLED ACTIVE 499712 CONCAT    -        RW" ,
"sd disk01-05 vol2-01 disk01 14952448 499712 0      DMX_0574_3 ENA" ,
"pl vol2-02 vol2 ENABLED ACTIVE 499712 CONCAT    -        RW" ,
"sd disk02-05 vol2-02 disk02 14952448 499712 0      DMX_0621_3 ENA" ,
" ",
"v  vol3 -          ENABLED  ACTIVE   245760   SELECT    -        fsgen" ,
"pl vol3-01 vol3 ENABLED ACTIVE 245760 CONCAT  -        RW" ,
"sd disk05-06 vol3-01 disk05 236978704 245760 0    DMX_0574_1 ENA" ,
"pl vol3-02 vol3 ENABLED ACTIVE 245760 CONCAT  -        RW" ,
"sd disk06-06 vol3-02 disk06 236978176 245760 0    DMX_0621_1 ENA" ,
"pl vol3-03 vol3 ENABLED ACTIVE LOGONLY CONCAT -        RW" ,
"sd disk05-07 vol3-03 disk05 236978176 528 LOG     DMX_0574_1 ENA"
 
        ) ;
Mon code pour récuperer les infos dans un hash

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
foreach (@lines)
{
 
        ($diskgroup) = ( $_ =~ /Disk group: (\w+)/ ) if ( $_ =~ /Disk group: (\w+)/ ) ;
 
        if ( $_ =~ /^v/ )
        {
                ($volname) = (split /\s+/, $_)[1] ;
                #print $_ ;
                if ( $debut eq 0 )
                {
                        $debut = 1 ;
                }
                else
                {
 
                print Dumper($refvol) ;
                $refvol = () ;
                $nbplex = 0 ;
                }
 
        }
        elsif ( $_ =~ /^pl/ )
        {
                ($plex,$volname,$logno) = (split /\s+/, $_)[1, 2, 5] ;
                $plex = "$plex"."_LOG" if ( $logno =~ /LOGONLY/ ) ;
                $nbplex++ ;
                $nblog++ if ( $plex =~ /LOG/ ) ;
        }
        elsif ( $_ =~ /^sd/ )
        {
                print "$volname\n";
                ($subdisk,$diskname,$diskemc) = (split /\s+/, $_)[1, 3, 7] ;
               $refvol->{$volname}->{$plex}->{$subdisk} = $diskname ;
        }
 
 
}

Résultat, il me manque une partie, la vol3 n'est pas rempli :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
vol1
vol1
vol1
vol1
$VAR1 = {
          'vol1' => {
                      'vol1-01' => {
                                     'disk03-03' => 'disk03',
                                     'disk03-04' => 'disk03'
                                   },
                      'vol1-02' => {
                                     'disk04-04' => 'disk04',
                                     'disk04-03' => 'disk04'
                                   }
                    }
        };
vol2
vol2
$VAR1 = {
          'vol2' => {
                      'vol2-01' => {
                                     'disk01-05' => 'disk01'
                                   },
                      'vol2-02' => {
                                     'disk02-05' => 'disk02'
                                   }
                    }
        };
vol3
vol3
vol3
merci pour votre aide, je n'arrive pas à voir ou est le probleme.