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 :

existe t-il un else du elsif en Perl?


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut existe t-il un else du elsif en Perl?
    Bjr

    JE voudrai poser une condition sur un elsif en perl.
    En fait j´ai une serie de conditions comme suit:

    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
     
    #ouverture d´une serie de fichiers entrée en ligne commande
     
    open(FH,"<$file") || die "error";
     
    while (FH) {
     
      if ($_ =~ /xxxxx/){
     
        traitement
      } 
      elsif ($_ =~ /yyyy/){
     
     
        traitement
      }
     
      elsif ($_=~ /caractere1/){
     
        B .=A+2;
     
      }elsif  ($_=~ /caractere12/) {
     
        A .=A+2+3;
       printf "A ."
      }else {
     
      printf "B.";
     }
     
     elsif (........){
    ..........
     
      }
    Au niveau de caractere1 et caractere2 se trouve mon probleme, j voudrai qu´il n´imprime le traitement de caractere1 dans le cas ou caractere2 n´existe pas, mais a ce niveau la mon programme plante.

    Comment donc poser une condition du genre else sur un elsif?

    Merci

  2. #2
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Ton problème c'est que tu as:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    * if
    * elsif
    * elsif
    * else
    * elsif
    le dernier elsif est injoignable, puisque dans le pire des cas le else est déclenché.


    il faut que tu fasses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    * if
    * elsif
    * elsif
    * elsif
    * else
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    * if
    * elsif
    * elsif
    * else {
    *    if (...) {...}
    * }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    malheureusement ca m´affiche un syntax error..

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    montre nous ton code (le vrai)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    open(FHI, "<$file") || die "error reading file $file";
     
      while(<FHI>){
     
        $_ =~ s/\x0d\x0a/\n/;
        if($_ =~ /hostname (.+)/){
          $hn_iter = $1;
        } elsif($_ =~ /^virtual-router (.+)/){
          $vr_iter = $1;
        } elsif($_ =~ /interface (.+)/){
          $int = $1;
        }elsif($_ =~ /router-id (.+)/){
     
          $router_id = $1;
     
         }     
     
          elsif($_ =~ /^\s+ip address ((?:\d+\.){3}\d+?)\s((?:\d+\.){3}\d+)/){  # A CE NIVEAU IL NE DOIT ASSIGNER UNE VALEUR A $IP QUE SI $_ =~ /^\s+\bip policy output\b/ N´EXISTE PAS DANS LE FICHIER LU, ET LA LIGNE ip policy SE TROUVE TOUJOURS APRES ip address
    	$ipa_a=$1;
            $ipm_a=$2;
     
    	$ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;&nbsp;<\/td>" . "\n";
     
            } 
              elsif ($_ =~ /^\s+\bip policy output\b/) {
     
    	      $ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;<span style=\"color:blue;font-size:200%\"><strong> !!??</strong></span> &nbsp;<\/td>" . "\n";
     
     
               }
     
    	elsif($_ =~ /ip route ([\d.]+)\s*([\d.]+)/){
     
    	 $Wrp .= "<td bgcolor=\"#FFBFA8\" id=\"ip\">" . $1 . "<\/td>" "\n";
    	  }
     
     
              elsif($_ =~ /network ([\d.]+)\s([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
     
    	  }elsif($_ =~ /address ([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
        	  } 
     
     
          }
     
      close(FHI);

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Je vous envoie le vrai code , la ligne ou le test est fait sur ip address ne doit etre prise en compte que si apres elle il n´y a pas de ligne avec ip policy.
    Au cas ou il y a ip policy sur la ligne apres ip address, on ne prend en compte que celle qui a ip policy. Jamais les deux a la fois......


    Citation Envoyé par lobiman
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    open(FHI, "<$file") || die "error reading file $file";
     
      while(<FHI>){
     
        $_ =~ s/\x0d\x0a/\n/;
        if($_ =~ /hostname (.+)/){
          $hn_iter = $1;
        } elsif($_ =~ /^virtual-router (.+)/){
          $vr_iter = $1;
        } elsif($_ =~ /interface (.+)/){
          $int = $1;
        }elsif($_ =~ /router-id (.+)/){
     
          $router_id = $1;
     
         }     
     
          elsif($_ =~ /^\s+ip address ((?:\d+\.){3}\d+?)\s((?:\d+\.){3}\d+)/){  # A CE NIVEAU IL NE DOIT ASSIGNER UNE VALEUR A $IP QUE SI $_ =~ /^\s+\bip policy output\b/ N´EXISTE PAS DANS LE FICHIER LU, ET LA LIGNE ip policy SE TROUVE TOUJOURS APRES ip address
    	$ipa_a=$1;
            $ipm_a=$2;
     
    	$ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;&nbsp;<\/td>" . "\n";
     
            } 
              elsif ($_ =~ /^\s+\bip policy output\b/) {
     
    	      $ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;<span style=\"color:blue;font-size:200%\"><strong> !!??</strong></span> &nbsp;<\/td>" . "\n";
     
     
               }
     
    	elsif($_ =~ /ip route ([\d.]+)\s*([\d.]+)/){
     
    	 $Wrp .= "<td bgcolor=\"#FFBFA8\" id=\"ip\">" . $1 . "<\/td>" "\n";
    	  }
     
     
              elsif($_ =~ /network ([\d.]+)\s([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
     
    	  }elsif($_ =~ /address ([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
        	  } 
     
     
          }
     
      close(FHI);

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    a premiere vue ca a l'air bon, mais tu dois avoir oublié une acollade qqpart.
    normalise ton indentation et tu devrais rapidement trouver le probleme.

    Une petite chose: si tu utilise $_ alors tu n'a pas besoin de l'expliciter dans ta regexp: elle sera par defaut effectuée sur $_ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(<FHI>){
     
        s/\x0d\x0a/\n/;
        if (/hostname (.+)/) {
    ...
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  8. #8
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    ton problème de syntaxe est sur la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $Wrp .= "<td bgcolor=\"#FFBFA8\" id=\"ip\">" . $1 . "<\/td>" "\n";
    tu as oublié de mettre un . pour joindre les 2 derniers éléments de chaine:

    à remplacer par

    ou par

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    je crois pas que ce soir cette ligne $Wrp , elle n´a rien a voir dans le resultat que je veux avoir. En plus elle n´est pas concatenée avec les 2 lignes d´avant.
    J´ai voulu utiliser une variable booleene du genre si il trouve ip adresse il se met a true et si il trouve ip policy il se met a false et ensuite il affecte la valeur de $ip en fonction de la valeur de la variable booleenne.
    Mais j´ai un probleme de "valeur non initialisée"...

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     
    open(FHI, "<$file") || die "error reading file $file";
     
    $bool = "";
     
      while(<FHI>){
     
        $_ =~ s/\x0d\x0a/\n/;
        if($_ =~ /hostname (.+)/){
          $hn_iter = $1;
        } elsif($_ =~ /^virtual-router (.+)/){
          $vr_iter = $1;
        } elsif($_ =~ /interface (.+)/){
          $int = $1;
        }elsif($_ =~ /router-id (.+)/){
     
          $router_id = $1;
     
         }     
     
          elsif($_ =~ /^\s+ip address ((?:\d+\.){3}\d+?)\s((?:\d+\.){3}\d+)/){  # A CE NIVEAU IL NE DOIT ASSIGNER UNE VALEUR A $IP QUE SI $_ =~ /^\s+\bip policy output\b/ N´EXISTE PAS DANS LE FICHIER LU, ET LA LIGNE ip policy SE TROUVE TOUJOURS APRES ip address
    	$ipa_a=$1;
            $ipm_a=$2;
     
     
     
       $bool = "true";
     
            } 
              elsif ($_ =~ /^\s+\bip policy output\b/) {
     
     
             $bool = "false";
               }
     
    	elsif($_ =~ /ip route ([\d.]+)\s*([\d.]+)/){
     
    	 $Wrp .= "<td bgcolor=\"#FFBFA8\" id=\"ip\">" . $1 . "<\/td>" "\n";
    	  }
     
     
              elsif($_ =~ /network ([\d.]+)\s([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
     
    	  }elsif($_ =~ /address ([\d.]+)/){
     
                print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
        	  } 
     
     
    # je place la test de la variable booleenne ici car il doit lire plusieurs lignes dc il affecte la valeur de $ip ici avant de continuer...
     
    if ($bool eq "true")
       {
        	$ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;&nbsp;<\/td>" . "\n";
     
      } else 
     
      {
     
    $ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>" . "<td>" . $ipm_a . "<\/td>" . "<td>" . "<b>Next Hop<\/b> &nbsp; $ipn_s " . "<br>" . "($network_notes$numhosts host$plural)" . "<\/td>" . "<td id=\"Router\">" . $hn_iter . ":" . $vr_iter . "<\/td>" . "<td >" . $int . "&nbsp;<span style=\"color:blue;font-size:200%\"><strong> !!??</strong></span> &nbsp;<\/td>" . "\n";
     
     
     
       }
     
     
          }
     
     
     
      close(FHI);

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    si une ligne n'est pas valide alors le parseur de perl va faire une syntaxe error et puis c'est tout, qu'elle soit executée ou non...
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Malheureusement jai tout essayé mais je n´ai toujours pas avancé d´un pouce....

  12. #12
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Pour résoudre un problème, toujours essayer de l'isoler en minimisant le code à tester. Ici tu as un pavé de 70 lignes, avec du code mal indenté, et non documenté, l'erreur peut venir de n'importe où, d'autant que tu ne nous as pas indiqué l'erreur exacte que l'interpréteur perl t'a fourni...

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    En fait comme j´ai eu a expliquer plus haut, il n´y a pas de probleme a l´execution, mais mon probleme c´est que je n´ai pas les resultats escomptés.

    En fait j´ai un fichier qui est lu et certaines valeurs sont reuperees pour etre affiché dans un page html d´ou les tags htnl du code...

    Dans ce fichiers, il ya 2 lignes qui me causent probleme:

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ip address 111.111.111.111
    ip policy output  bla bla bla
    .............
    .............
    .............
    .............
    ip address 123.44.44.55
    .............
    .............
    .............
    .............
    etc...

    Donc quand je parcours le fichier, si j trouve une ligne commencant par ip address, je dois la lire mais au cas ou apres cette ligne apparait une autre commencant par ip policy output, je dois recuperer l´adresse ip de la ligne d´avant et ajouter !!?? dans la ligne qui sera affichée.

    Au cas ou la ligne ayant l´adresse Ip n´est pas suivit de Policy output, je n´ajoute pas de !!??

    MAis dans mon programme, chaque fois qu´une ligne ayant ip policy aura ete trouve, il va afficher 2 fois l´adresse ip, (1 sans !!?? et 1 avec !!??), ce que je ne veux pas. il doit afficher cette ligne la 1 seule fois au cas ou celle ayant ip adress est suivit de ip policy...


    j´essai dc de conditionner l´affichage, de telle facon qu´il n´affiche qu´une seule fois et non 2 fois au cas ou il trouve ip policy.

    J´ai essayé de soigner le code:



    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    open(FHI, "<$file") || die "error reading file $file";
     
       while(<FHI>){
     
               $_ =~ s/\x0d\x0a/\n/;
               if($_ =~ /hostname (.+)/)
                 {
                   $hn_iter = $1;
                  }
                  elsif($_ =~ /^virtual-router (.+)/)
                  {
                    $vr_iter = $1;
                   }  
                   elsif($_ =~ /interface (.+)/)
                   {
                     $int = $1;
                    }
                    elsif($_ =~ /router-id (.+)/)
                    {
                      $router_id = $1;
                     }     
     
                      elsif($_ =~ /^\s+ip address ((?:\d+\.){3}\d+?)\s((?:\d+\.){3}\d+)/)
                   {  
     
             # A CE NIVEAU IL NE DOIT ASSIGNER UNE VALEUR A $IP SANS LE CAS OU  $_ =~ /^\s+\bip policy output\b/ N´EXISTE PAS DANS LE FICHIER LU, ET LA LIGNE ip policy output SE TROUVE TOUJOURS APRES ip address DANS LE FICHIER A LIRE...
     
     	$ipa_a=$1;
                 $ipm_a=$2;
     
    	$ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>"  . "\n";
     
                     } 
     
                    elsif ($_ =~ /^\s+\bip policy output\b/)
                     {
     
    	      $ip .= "<td id=\"ip\">" . $ipa_a . "<\/td>"  !!??\/td>" . "\n";
                        }
     
    	      elsif($_ =~ /ip route ([\d.]+)\s*([\d.]+)/)
                       {
     
            	       $Wrp .= "<td bgcolor=\"#FFBFA8\" id=\"ip\">" . $1 . "<\/td>" "\n";
    	       }
     
                        elsif($_ =~ /network ([\d.]+)\s([\d.]+)/)
                       {
                         print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
     
    	      }
                     elsif($_ =~ /address ([\d.]+)/)
                      {
                        print FAE "<td><a href=$file target=\"_new\" >$vr_iter</a></td><td>$area</td></tr> \n";
        	      } 
          }
     
      close(FHI);

  14. #14
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    pourquoi ne pas utiliser un code de ce style ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    my $lastip = '';
    while(<INPUT>)
    {
        if (/^ip address (\d+\.\d+\.\d+\.\d+)) { 
            lastip = $1;
        }
        elsif (/^ip policy output/) {
            print "$lastip !!??\n";
        }
    }

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  15. #15
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Et au cas ou "ip policy" n´existe pas que fait t-on de lastip = $1?

    Il faut tenir compte des traitements qui se font avant d´arriver à ip address. On doit pas seulement chercher la valeur de ip address mais avant ca il y a autre chose a faire , ip adress ne se trouve qu´en milieu de fichier (parce que vous avez directement commencé par if (/^ip address (\d+\.\d+\.\d+\.\d+)) ).

    Merci

  16. #16
    Membre éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Ici, si ip adress n'a pas été trouvé avant ip policy, ca affichera juste des "?!!!", vu que j'ai initialisé la variable à '', mais tu peux faire un test pour ne rien afficher du tout...

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  17. #17
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Tel que le fichier est generé, il ne peut il y avoir de ip policy sans ip adress, mais par contre il peut avoir des ligne avec ip adress sans quelles soient suivies de ip policy.
    Donc on peut avoir une serie de 4 ,5,6,10 ligne commencant par ip adress, et aucune n´est suivi par ip policy tout comme a un niveau il peut apparaitre des ligne ip adress suivies par ip policy chacune. mais jamais de ip policy isolée.

    Merci

  18. #18
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    je cherche un moyen d´utiliser $/ et chomp pour faire sauter le dernier element du tableau (qui ne peut etre que la ligne que je veux supprimer ) au moment ou il execute le if de ip policy...
    Si quelqu´un a une idée????
    Merci

  19. #19
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour.

    Euh, pour faire sauter le dernier élement du tableau, un pop ne serait-il pas suffisante par hasard ?
    chomp s'applique à des chaînes de caractère, pas à des tableaux...
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  20. #20
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    finalement comme on dit a foce de chercher sans trouver on finit par trouver sans chercher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    for ($i =0; $i<@ip; $i++){
     
    if ($ip[$i] =~ /!!/){
     
    $ip[$i-1]="";
     
    }
     
    }

    simplement lire tout le tableau, quand on trouve !! alors on met a blanc la case d´avant. Terminé !

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

Discussions similaires

  1. [Batch] Je comprends pas.. If exist Else
    Par giganrv dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 17/02/2014, 11h58
  2. "condition d'existence" d'une référence ? (if, else et macro ?)
    Par sarmin dans le forum Programmation (La)TeX avancée
    Réponses: 1
    Dernier message: 10/05/2010, 22h39
  3. Existe-t-il un équivalent du 'split' de perl ?
    Par Ksawery dans le forum Langage
    Réponses: 4
    Dernier message: 08/10/2009, 12h27
  4. Astuces de if elsif et else et les requêtes?
    Par menoulette dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2009, 13h15
  5. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 19h11

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