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 :

Soucis CODE (Débutant)


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut Soucis CODE (Débutant)
    Bonjour,

    Je suis en train de réaliser des scripts CGI, ou plutôt les modifier car c'est l'ancien stagiaire qui les a créer mais en tout bon dévellopeur il a RIEN commenté : Excellent !!!
    Bref j'ai réussi à comprendre globalement le rôle de tous ses prog après quelques heures de doc passées sur PERL, mais là j'ai du mal , j'ai pas trouvé la signification de ces expressions régulières :

    Il s'agit d'un prog pour effacer les données dans le fichier ci-dessous :

    define serviceextinfo{
    host_name PIX-NAGIOS,PIX-515,Parfait
    service_description Verification Configuration
    notes Informations sur les modifications de la configuration
    notes_url ../cgi-bin/compareinfo.pl
    # icon_image info.png
    # icon_image_alt info.png
    }


    et le code pour effacer c'est sa :

    open F,"/usr/local/nagios/etc/serviceextinfo.cfg" or die "Erreur ouverture serviceextinfo.cfg : $!";
    @f=<F>;
    close F;
    open F,">/usr/local/nagios/etc/serviceextinfo.cfg" or die "Erreur ouverture serviceextinfo.cfg : $!";
    $i=0;
    while(defined $f[$i]){
    if($f[$i]=~m/Verification Configuration/) #si la ligne contient le txt "Verification Configuration"
    {
    $f[$i-1]=~s/(,?)$nompix(,?)/,,/;
    $f[$i-1]=~s/,,/,/;
    $f[$i-1]=~s/,$//;
    $f[$i-1]=~s/\t,/\t/;

    }
    $i++;
    }
    my $l="";
    foreach $l (@f){
    print F $l;

    }
    close F;

    J'ail laissé un commentaire ou j'ai compris, et en orange les endroits ou je ne comprend pas (expressions régulières). je ne suis pas grand dévellopeur, stagiaire pour l'instant donc un peu d'aide ferait plaisir.

    Merci

  2. #2
    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,

    Que contient la variable $nompix ?
    Sinon, chaque expression est une substitution : la partie de gauche est remplacée par celle de droite.
    Je ne sais pas à quoi sert la première regex(je connais pas le contenu de la variable $nompix), la seconde remplace deux virgules par une seule, la troisième remplace une virgule située en fin de chaine par rien du tout, la dernière remplace une tabulation suivie d'une virgule par une simple tabulation.

    Pour la boucle foreach, elle parcourt le tableau et inscrit dans le fichier qui a pour Handle F son contenu ligne à ligne.

    Je peux pas t'en dire plus pour l'instant...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Merci Beaucoup pour tes informations

    $nompix représente le nom de mon PIX que je récupère via un autre cgi
    my $nompix=cgi param-> etc...

    c'est un nom comme PIX-Nagios, PIX-515 ou encore Parfait

    mais je ne vois pas a quoi sert la première ligne...remplace-t-il le nom de mon PIX par deux virgules ?

    La boucle foreach parcout mon fichier (@f) et remplace le contenu par les nouvelles données, mais où sont stocké les modifications du genre remplacement de deux virgules par une seule. Car pour moi il faut stocké sa dans un tableau et réecrire après la ligne au complet,non?

    J'espère avoir été assez clair ...

    Merci encore

  4. #4
    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
    Ben c'est ce qu'il se passe : tout le contenu du fichier est stocké dans un tableau, ce tableau est modifié par les regex, puis le fichier de base est réouvert en mode écriture et écrasement, donc toutes les données précédentes sont écrasées et remplacés par ce que l'on écrit à l'intérieur.
    L'instruction print F $l écrit le contenu de la variable $l dans le fichier qui a pour handle F, la variable $l contenant à chaque boucle un élément du tableau modifié.
    ...

    J'ai pas été clair si ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 50
    Points : 39
    Points
    39
    Par défaut
    Je te remercie beaucoup Woulfeil, tu m'a bien dépanner, je pense avoir bien compris.

    Juste une dernière question c'est un problème de récupération d'information.
    Mon programme efface très bien les infos quand je lui donne en paramètre :
    my $ippix="192.168.192.3";
    my $nompix="Testm";
    il recherche dans les fichiers souhaités et supprime ce qu'il faut de façon niquel.

    Pour sélectionner le pix à supprimé le pix j'utilise un <select name=\"ippix\">

    mais si je créer deux nouveaux pixs et j'utilise :
    my $ippix=$cgi->param("ippix");
    my $nompix=$cgi->param("ippix");
    pour récupérer les paramètres

    si je souhaite supprimer le pix que j'ai créer en premier il supprime les données concernant l'ippix parfaitement, mais les donées concernant $nompix ne s'efface pas et ce sont les données $nompix du dernier pix qui s'efface.bref pas top

    Alors que récupère vraiment :
    my $ippix=$cgi->param("ippix");
    my $nompix=$cgi->param("ippix");
    où va-t-il chercher ces param("nompix") et param ("ippix")?????

    Merci

Discussions similaires

  1. Soucis code javascript
    Par Esperence dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2007, 21h43
  2. 3 Soucis de débutant je suppose
    Par icecube216 dans le forum Access
    Réponses: 5
    Dernier message: 24/08/2006, 22h39
  3. Xsl problème d'affichage (code) [débutant]
    Par redsaint dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 01/06/2005, 17h02

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