Bonjour,
Je n'arrive pas à comprendre pourquoi mon hash ne se rempli pas comme il faudrait.
Le contenu de mon "fichier" :
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 @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" ) ;
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 :
merci pour votre aide, je n'arrive pas à voir ou est le probleme.
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
Partager