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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    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 Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    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 (...) {...}
    * }

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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Par défaut
    montre nous ton code (le vrai)

  5. #5
    Membre averti
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    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 averti
    Inscrit en
    Juin 2003
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 30
    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);

+ 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, 10h58
  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, 21h39
  3. Existe-t-il un équivalent du 'split' de perl ?
    Par Ksawery dans le forum Langage
    Réponses: 4
    Dernier message: 08/10/2009, 11h27
  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, 12h15
  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, 18h11

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