Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Programmation.perl

Programmation.perl : rexep exception

Posté par Raphaël SurcouF (Jabber id, page perso, ) le 29 juin 2005
Bonjour à tous,

J'utilise actuellement un plugin pour nagios, écrit évidemment en Perl, qui me permet d'avoir les états des interfaces réseaux en fonction d'une regexp sur le nom. Or, j'aimerais pouvoir mutualiser au possible la définition du service qui s'en suivra. Aussi, j'aimerais donc avoir toutes les interfaces sauf une: "MS TCP Loopback interface".

Merci d'avance,

> Lire le message (9 commentaires, moyenne: 1,7).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

?

Posté par gc (page perso, ) le 29/06/2005 à 16:01. (lien). Évalué à 2.

@goods = grep { !/MS TCP Loopback interface/ } @interfaces;

  • [^]Re: ?

    Posté par Raphaël SurcouF (Jabber id, page perso, ) le 29/06/2005 à 16:46. (lien). Évalué à 2.

    Merci mais en fait, j'aimerais éviter de toucher au code dudit plugin.
    Celui me permet de saisir directement une regexp comme argument à une des options. J'aurais aimé quelque chose à insérer directement entre / /.
    Au pire, je peux ajouter une option inversant le matching de la regexp...

    • [^]Re: ?

      Posté par Pierre Mallard () le 29/06/2005 à 21:42. (lien). Évalué à 2.

      Je ne connais pas le plugin mais la regexp devrait être du style :
      /^(?!MS TCP Loopback interface)/

      (?!...) etant la negation des parentheses

      ^ pour le debut de chaine, apparement l'assertion negative a besoin d'etre avec quelque chose ...

      Cela ne matchera pas : "MS TCP Loopback interface" mais normalement tout le reste

      • [^]Re:

        Posté par Raphaël SurcouF (Jabber id, page perso, ) le 30/06/2005 à 11:07. (lien). Évalué à 2.

        Merci beaucoup ;-)
        Cette façon de l'écrire fonctionne effectivement bien.

        • [^]Re: Re:

          Posté par Raphaël SurcouF (Jabber id, page perso, ) le 30/06/2005 à 13:19. (lien). Évalué à 2.

          Autre solution pour éviter d'avoir des ! dans les arguments pour nagios:

          /^[^MS TCP Loopback interface]/

          Merci à tous.

          • [^]Re: Re:

            Posté par gc (page perso, ) le 30/06/2005 à 13:31. (lien). Évalué à 2.

            Ben non c'est pas la meme chose.

            [gc@meuh ~/src/cyote] perl -e 'foreach ("foo", "MS TCP Loopback interface", "Loopback", "bar") {print "$_\n" if /^[^MS TCP Loopback interface]/}'
            [gc@meuh ~/src/cyote] perl -e 'foreach ("foo", "MS TCP Loopback interface", "Loopback", "bar") {print "$_\n" if /^(?!MS TCP Loopback interface)/}'
            foo
            Loopback
            bar

          • [^]Re: Re:

            Posté par Pierre Mallard () le 30/06/2005 à 14:06. (lien). Évalué à 1.

            Une petite precision :
            lorsque tu utilise les crochets c'est une classe caractere a savoir donc que tu decrit un ensemble qui va matcher tous carcteres appartentant a cette ensemble :
            [A-Z] matche par exemple B,C,A,....
            [AatT] matche a A t T ...
            le circonflexe est la negation de l'ensemble : [^A-Z] matchera toutes lettres sauf les majuscules.
            Ainsi
            /^[^MS TCP Loopback interface]/
            ne matchera pas "Mquelquechose" "Squelquechose" " quelquechose", etc etc etc
            (?!...) est donc la seule possibilite offerte pour ne pas matcher une chaine de plus d'un caractere.
            (en dehors du !~ mais celui ci s'applique a tout le match ("toto" !~ m/tutu/)<-- VRAI)

    • [^]Re: ?

      Posté par Pierre Mallard () le 29/06/2005 à 22:12. (lien). Évalué à 1.


      Au pire, je peux ajouter une option inversant le matching de la regexp...


      heu ...désolé

      ok ---------------> [] !

      • [^]Re: ?

        Posté par gnujsa () le 25/07/2005 à 00:43. (lien). Évalué à 1.


        ok ---------------> [] !


        C'est une regex en programmation orientée objet ?

        bon, ok, je vais tester

        ok ---------------> [] !

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.perl