<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}
p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div>Hello, une autre approche permet de le faire en une ligne:<br></div><div><br></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">my $result = `cat result`;<br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">my %values = grep length, split(/: +|&nbsp; +|\n/, $result);<br></span></div><div><br></div><div>A lire de droite à gauche:<br></div><div>on applique <span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">split(/: +|&nbsp; +|\n/) </span>sur result. Cela va couper la longue chaine sur<br></div><div>- "deux-points suivis d'autant d'espace qu'on veut": pour séparer la clef à gauche du deux-points de la valeur qui est à droite<br></div><div>- "deux ou plus espaces": pour séparer entre deux "clefs-valeur" sur une même ligne<br></div><div>- "\n": pour séparer par ligne.<br></div><div><br></div><div>On applique un grep pour virer les lignes vides si jamais il y en a. Au final on a une liste de clef valeur qu'il suffit de stocker dans un hash. Le résultat:<br></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'VG DESCRIPTORS' =&gt; '2',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'FS SYNC OPTION' =&gt; 'no',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'MAX LVs' =&gt; '256',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'FREE PPs' =&gt; '21 (2688 megabytes)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'MAX PPs per VG' =&gt; '32512',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'LTG size (Dynamic)' =&gt; '512 kilobyte(s)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'BB POLICY' =&gt; 'relocatable',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'PV RESTRICTION' =&gt; 'none',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'OPEN LVs' =&gt; '22',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'VG PERMISSION' =&gt; 'read/write',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'TOTAL PVs' =&gt; '1',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'AUTO ON' =&gt; 'yes',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'LVs' =&gt; '28',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'VG IDENTIFIER' =&gt; '00f702be00004c0000000159122168ad',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'ACTIVE PVs' =&gt; '1',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'DISK BLOCK SIZE' =&gt; '512',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'STALE PPs' =&gt; '0',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'QUORUM' =&gt; '2 (Enabled)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'USED PPs' =&gt; '778 (99584 megabytes)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'MAX PVs' =&gt; '32',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'VOLUME GROUP' =&gt; 'rootvg',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'PP SIZE' =&gt; '128 megabyte(s)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'MAX PPs per PV' =&gt; '1016',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'VG STATE' =&gt; 'active',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'TOTAL PPs' =&gt; '799 (102272 megabytes)',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'CRITICAL VG' =&gt; 'no',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'AUTO SYNC' =&gt; 'no',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'HOT SPARE' =&gt; 'no',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'INFINITE RETRY' =&gt; 'no',</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'STALE PVs' =&gt; '0'</span><span style="font-family: menlo, consolas, monospace, sans-serif;" class="font"><br></span></div><div><br></div><div><br></div><div><br></div><div>On Wed, Feb 12, 2020, at 08:38, Nicolas wrote:<br></div><blockquote id="qt" type="cite"><div>Bonjour Stéphane,<br></div><div><br></div><div>Oui il y a toujours plus d'une façon de faire en Perl ;)<br></div><div><br></div><div>Donc en fait la "clé" qui me manquait était l'analyse de la sortie
    "multiligne" de la commande en "une seule chaine" (et non comme
    "plusieurs lignes successives").<br></div><div>La regexp est donc construite pour matcher "autant de fois que
    possible" les "clé/valeur" tout au long de la chaine et non "une ou
    2 fois par ligne", c'est ce qui me "manquait".<br></div><div><br></div><div>Merci pour ce petit coup de pouce un samedi à minuit ;)<br></div><div><br></div><div>Bonne journée,<br></div><div>Nicolas<br></div><div><br></div><div><br></div><div class="qt-moz-cite-prefix">Le 09/02/2020 à 12:46, Stéphane
      Gigandet a écrit&nbsp;:<br></div><blockquote type="cite" cite="mid:9412fd06-bc7d-ebfc-d09e-c5fbc842e0f8@joueb.com"><div class="qt-moz-cite-prefix">Bonjour Nicolas,<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Tu as tout analysé correctement.
        L'idée c'est de considérer ta sortie non pas comme une suite de
        lignes, mais comme une seule longue chaîne de caractères qui
        contient aussi des retours chariots \n. <br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Dans cette chaîne, la fin d'une
        valeur est suivie soit par plusieurs espaces (quand c'est la
        1ère paire clé/valeur et qu'il y en a une 2ème plus à droite),
        soit par un retour chariot (quand c'est la dernière paire
        clé/valeur de la ligne).<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">C'est le but du (&nbsp; |\n) : on arrête
        la valeur quand on a 2 espaces ou le retour chariot.<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">J'ai mis des parenthèses autour de (&nbsp;
        |\n), c'est pour que le | s'applique sur les 2 espaces ou le
        retour chariot. Ca va effectivement mettre ces 2 espaces ou le
        retour chariot dans $3, qu'on n'utilise pas. Ce n'est pas
        gênant.<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Le /g permet de matcher plusieurs
        fois par chaîne, pas par ligne, on ne considère plus chaque
        ligne individuellement.<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">C'est une solution parmi plein
        d'autres possibles, c'est juste celle qui me paraissait la plus
        rapide à coder à minuit hier soir. :)<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Bonne journée,<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Stéphane<br></div><div class="qt-moz-cite-prefix"><br></div><div class="qt-moz-cite-prefix">Le 09/02/2020 à 02:41, Nicolas a
        écrit&nbsp;:<br></div><blockquote type="cite" cite="mid:eafc18d2-39c4-a15f-90c9-d711a2cd650a@escwq.fr"><div>Bonsoir Stéphane,<br></div><div><br></div><div>Merci pour ta proposition !<br></div><div>C'est effectivement sans doute la bonne approche au global,
        modulo que certaines lignes n'ont parfois qu'une seule
        "clée/valeur" suivant la config rencontrée (donc non
        prévisible).<br></div><div>Il semble que ta regexp "gère ça" mais je n'ai pas encore
        compris comment :/<br></div><div><br></div><div>Par contre j'aimerai quelques explications (ou une confirmation)
        sur ta regexp stp (j'aime bien comprendre ^_^ ).<br></div><div><span class="font" style="font-family:&quot;Courier New&quot;;">/\s*([^:]+):\s+(.*?)(&nbsp; |\n)/g<br> /&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0) Début de la regexp<br> \s*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1) Match 0 ou + "espace"<br> (&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) On commence la sélection =&gt; ce sera $1<br> [^:]+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3) On prend &lt;tous les caractères qui ne sont pas
          ':'&gt;<br> ):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4) On termine la sélection juste avant le premier
          ":"<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A ce stade on a "enlevé tous les espaces de
          début de ligne (1) et ensuite commencé la sélection (2) juste
          avant de prendre &lt;tout ce qui n'est pas ':'&gt; et on
          termine la sélection juste avant le premier ":" rencontré (4),
          car ":" c'est le séparateur de fin de clée.<br> \s+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5) Match 0 ou + "espace"<br> (&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6) On commence la sélection =&gt; ce sera $2<br> .*?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7) On prend n'importe quel caractère en mode "non
          gourmand"<br> )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8) On termine la sélection<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A partir d'ici j'ai plus de mal à comprendre
          car je pense que ça doit débuter la sélection de $3, alors
          qu'on ne l'utilise pas après.<br> (&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9) On commence la sélection =&gt; ce sera $3<br> &nbsp; |\n&nbsp;&nbsp;&nbsp;&nbsp; 10) On prend "2x espace" ou "fin de ligne"<br> )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11) On termine la sélection<br> /g&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 12) Fin de la regex avec utilisation du flag "g" qui
          va matcher répétitivement.</span></div><div>Je pense avoir correctement analysé le contenu mais pas le "but"
        de la regexp "dans son ensemble", en particulier les parties (9)
        et suivantes.<br></div><div>Je pense que le (10) sert à identifier une "fin de paire
        cle/valeur" avec les 2 espaces consécutifs ou la fin de ligne.<br></div><div>Le flag "g" va permettre de matcher "plusieurs fois" par ligne
        et donc les 2 couples "clé/valeur" par ligne, mais du coup
        comment perl "fait-il le job" en utilisant uniquement $1 et $2
        dans le while et que devient $3 ?<br></div><div><br></div><div>En effet, pour une ligne avec 1x "clé/valeur", on va bien avoir
        :<br></div><div>&nbsp;&nbsp;&nbsp; $1 = clé<br></div><div>&nbsp;&nbsp;&nbsp; $2 = valeur<br></div><div>Mais pour une ligne avec 2x "clé/valeur", je m'attendrai à avoir
        :<br></div><div>&nbsp;&nbsp;&nbsp; $1 = clé<br></div><div>&nbsp;&nbsp;&nbsp; $2 = valeur<br></div><div>&nbsp;&nbsp;&nbsp; $3 = clé<br></div><div>&nbsp;&nbsp;&nbsp; $4 = valeur<br></div><div><br></div><div>Et là je me rend bien compte que j'ai loupé une subtilité :'(<br></div><div><br></div><div>A noter qu'il faut que je vérifie qu'il y ai toujours au moins
        "2 espaces" entre la fin de la "1ere Valeur" et le début de la
        "2eme clee".<br></div><div>Par contre je dois pouvoir utiliser un lettre "majuscule" (les
        CLEE sont presque exclusivement en majuscule) comme point de
        repère du début de la 2eme clée.... faut que je récupère
        d'avantage de "données brut" pour infirmer/confirmer.<br></div><div><br></div><div>@+<br></div><div>Nicolas<br></div><div><br></div><div><br></div><div><br></div><div class="qt-moz-cite-prefix">Le 09/02/2020 à 00:52, Stéphane
          Gigandet a écrit&nbsp;:<br></div><blockquote type="cite" cite="mid:e8661e8f-b974-6c56-b1ec-193758ef9810@joueb.com"><div>Hello
          Nicolas, <br></div><div><br></div><div>Comme la sortie est toujours de la forme "clé : valeur" (avec
          2 paires clés / valeurs sur chaque ligne), le plus simple
          c'est peut être de parser toutes les clés en un coup, sans
          découper chaque ligne dans un tableau, avec un truc de ce
          genre là : <br></div><div><br></div><div>#!/usr/bin/perl -w <br></div><div><br></div><div>use strict; <br></div><div><br></div><div>my $result = `cat result`; <br></div><div><br></div><div>my %values = (); <br></div><div><br></div><div>while ($result =~ /\s*([^:]+):\s+(.*?)(&nbsp; |\n)/g) { <br></div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $values{$1} = $2; <br></div><div>} <br></div><div><br></div><div>foreach my $key (sort keys %values) { <br></div><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "$key : $values{$key}\n"; <br></div><div>} <br></div><div><br></div><div>Ca donne ça : <br></div><div><br></div><div>ACTIVE PVs : 1 <br></div><div>AUTO ON : yes <br></div><div>AUTO SYNC : no <br></div><div>BB POLICY : relocatable <br></div><div>CRITICAL VG : no <br></div><div>DISK BLOCK SIZE : 512 <br></div><div>FREE PPs : 21 (2688 megabytes) <br></div><div>FS SYNC OPTION : no <br></div><div>HOT SPARE : no <br></div><div>INFINITE RETRY : no <br></div><div>LTG size (Dynamic) : 512 kilobyte(s) <br></div><div>LVs : 28 <br></div><div>MAX LVs : 256 <br></div><div>MAX PPs per PV : 1016 <br></div><div>MAX PPs per VG : 32512 <br></div><div>MAX PVs : 32 <br></div><div>OPEN LVs : 22 <br></div><div>PP SIZE : 128 megabyte(s) <br></div><div>PV RESTRICTION : none <br></div><div>QUORUM : 2 (Enabled) <br></div><div>STALE PPs : 0 <br></div><div>STALE PVs : 0 <br></div><div>TOTAL PPs : 799 (102272 megabytes) <br></div><div>TOTAL PVs : 1 <br></div><div>USED PPs : 778 (99584 megabytes) <br></div><div>VG DESCRIPTORS : 2 <br></div><div>VG IDENTIFIER : 00f702be00004c0000000159122168ad <br></div><div>VG PERMISSION : read/write <br></div><div>VG STATE : active <br></div><div>VOLUME GROUP : rootvg <br></div><div><br></div><div>Bon dimanche, <br></div><div><br></div><div>Stéphane <br></div><div><br></div><div>Le 08/02/2020 à 21:56, Nicolas a écrit&nbsp;: <br></div><div><br></div><blockquote type="cite"><div>Bonsoir, <br></div><div><br></div><div>Après de (trop) nombreuses années à ne pas faire d'admin, je
            remets (laborieusement) les mains dans le cambouis... et
            donc dans perl ;o) <br></div><div><br></div><div>Je n'ai jamais eu un niveau "gourou" en perl (même il y a
            15ans) mais j'arrive encore à écrire du code qui me donne le
            résultat attendu.... alors ça me convient ;o) <br></div><div>Mais du coup je vais peut-être avoir une question "bête"
            concernant le traitement de la sortie d'une commande. <br></div><div><br></div><div>La commande fournit une sortie sur STDOUT que je stocke dans
            un tableau via : <br></div><div>my @array=split(/\n/,`ma_super_commande_UNIX`) or die "error
            while processing command \"ma_super_commande_UNIX\""; <br></div><div><br></div><div>Ensuite je fais une boucle pour parcourir le tableau et
            appliquer la bonne regexp afin de récupérer les parties
            "ah-hoc" de chaque ligne et les stocker dans un hash avec
            les bonnes clés. <br></div><div><br></div><div>La boucle est de la forme : <br></div><div>foreach my $scalar (@array) <br></div><div>{ <br></div><div>&nbsp; if ( $scalar =~ m/VG IDENTIFIER:\s+(\S+)/ ) <br></div><div>&nbsp; { <br></div><div>&nbsp;&nbsp;&nbsp; $hash{$stanza}{'VGid'}=$1; <br></div><div>&nbsp; } <br></div><div>} <br></div><div><br></div><div>En répétant les "if" dans la boucle (un "if" par ligne à
            traiter avec la regexp associée) je peux matcher chaque
            ligne "qui va bien" par exécution de la commande et ainsi
            récupérer les 2 valeurs par ligne qui m'intéressent. <br></div><div><br></div><div>A la place du "if" j'ai essayé une notation de la forme : <br></div><div>&nbsp;&nbsp;&nbsp; ($hash{$stanza}{'VGid'}, )=( $scalar =~ m/VG
            IDENTIFIER:\s+(\S+)/ ); <br></div><div><br></div><div>Mais ceci a pour seul résultat de bien matcher la bonne
            ligne dans la boucle, mais au "tour suivant" de la boucle
            (ligne suivante stockée dans @array) alors la valeur est
            "mise à zéro", ceci sans doute car du coup la regexp ne
            match pas ce qui est assez logique puisque ce n'est plus la
            bonne ligne. <br></div><div>J'ai donc certainement loupé un truc quelque part..... <br></div><div>Je peux bien entendu garder ma ribambelle de "if" à
            l'intérieur de la boucle mais..... je pense qu'il y a plus
            simple / plus perl et que je ne suis pas loin..... :( <br></div><div><br></div><div>J'ai mis, un exemple de sortie de commande en fin de mail,
            je récupère les 1 ou 2 valeurs par ligne pour stocker la
            30aine de valeurs dans un hash. <br></div><div><br></div><div>Bonne soirée, <br></div><div>Nicolas <br></div><div><br></div><div>VOLUME GROUP:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rootvg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VG IDENTIFIER:
            00f702be00004c0000000159122168ad <br></div><div>VG STATE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PP SIZE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            128 megabyte(s) <br></div><div>VG PERMISSION:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read/write&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TOTAL PPs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            799 (102272 megabytes) <br></div><div>MAX LVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FREE PPs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            21 (2688 megabytes) <br></div><div>LVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; USED PPs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            778 (99584 megabytes) <br></div><div>OPEN LVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QUORUM:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            2 (Enabled) <br></div><div>TOTAL PVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VG DESCRIPTORS:
            2 <br></div><div>STALE PVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STALE PPs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            0 <br></div><div>ACTIVE PVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO ON:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            yes <br></div><div>MAX PPs per VG:&nbsp;&nbsp;&nbsp;&nbsp; 32512 <br></div><div>MAX PPs per PV:&nbsp;&nbsp;&nbsp;&nbsp; 1016&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MAX PVs:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            32 <br></div><div>LTG size (Dynamic): 512 kilobyte(s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO SYNC:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            no <br></div><div>HOT SPARE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BB POLICY:
            relocatable <br></div><div>PV RESTRICTION:&nbsp;&nbsp;&nbsp;&nbsp; none&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INFINITE RETRY:
            no <br></div><div>DISK BLOCK SIZE:&nbsp;&nbsp;&nbsp; 512&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CRITICAL VG:&nbsp;&nbsp;&nbsp;
            no <br></div><div>FS SYNC OPTION:&nbsp;&nbsp;&nbsp;&nbsp; no <br></div><div><br></div><div><br></div><div>_______________________________________________ <br></div><div>Perl mailing list <br></div><div><a class="qt-moz-txt-link-abbreviated" href="mailto:Perl@mongueurs.net">Perl@mongueurs.net</a> <br></div><div><a class="qt-moz-txt-link-freetext" href="http://listes.mongueurs.net/mailman/listinfo/perl">http://listes.mongueurs.net/mailman/listinfo/perl</a> <br></div><div>Attention, les archives sont publiques <br></div></blockquote><div><br></div><div><br></div><div>_______________________________________________<br></div><div>Perl mailing list <br></div><div><a class="qt-moz-txt-link-abbreviated" href="mailto:Perl@mongueurs.net">Perl@mongueurs.net</a> <br></div><div><a class="qt-moz-txt-link-freetext" href="http://listes.mongueurs.net/mailman/listinfo/perl">http://listes.mongueurs.net/mailman/listinfo/perl</a> <br></div><div>Attention, les archives sont publiques <br></div></blockquote><div><br></div><div><br></div><pre class="qt-moz-quote-pre" wrap="">_______________________________________________
Perl mailing list
<a class="qt-moz-txt-link-abbreviated" href="mailto:Perl@mongueurs.net">Perl@mongueurs.net</a>
<a class="qt-moz-txt-link-freetext" href="http://listes.mongueurs.net/mailman/listinfo/perl">http://listes.mongueurs.net/mailman/listinfo/perl</a>
Attention, les archives sont publiques<br></pre></blockquote><p><br></p><div><br></div><pre class="qt-moz-quote-pre" wrap="">_______________________________________________
Perl mailing list
<a class="qt-moz-txt-link-abbreviated" href="mailto:Perl@mongueurs.net">Perl@mongueurs.net</a>
<a class="qt-moz-txt-link-freetext" href="http://listes.mongueurs.net/mailman/listinfo/perl">http://listes.mongueurs.net/mailman/listinfo/perl</a>
Attention, les archives sont publiques<br></pre></blockquote><div><br></div><div>_______________________________________________<br></div><div>Perl mailing list<br></div><div>Perl@mongueurs.net<br></div><div>http://listes.mongueurs.net/mailman/listinfo/perl<br></div><div>Attention, les archives sont publiques<br></div></blockquote><div><br></div></body></html>