IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Probleme Remplissage d'un HASH


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Par défaut Probleme Remplissage d'un HASH
    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.

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    La "vol3" est rempli, simplement tu ne l'affiches jamais... Regarde, tu affiches $refvol lorsque tu rencontres un nouveau volume (ligne commençant par "v ", or après "vol3" il n'y a plus de volume, donc tu n'affiches pas $refvol...

    Par ailleurs je te conseille fortement d'utiliser le pragma "strict" si tu ne le fais pas encore, ça t'évitera bien des déboires.

    --
    Jedaï

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Par défaut
    Bonjour,

    Oui, j'utilise bien du strict, j'ai juste copié un bout de code.

    Sinon, je ne vois pas comment je pourrais afficher mon has vol3.

    meric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant]Probleme remplissage datagrid
    Par noname_971 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/04/2009, 00h38
  2. probleme avec boucles et hash
    Par ellgafsi dans le forum Langage
    Réponses: 9
    Dernier message: 02/04/2009, 12h31
  3. probleme remplissage d'un dataset
    Par bellak dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/12/2008, 10h19
  4. Probleme remplissage Array 2d avec un For
    Par Nico820 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2008, 08h37
  5. [MFC] probleme remplissage comboBox avec ADOLib
    Par moulefrite dans le forum MFC
    Réponses: 3
    Dernier message: 05/04/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo