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 :

Problème de script Perl - merci d'avance de votre aide


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut Problème de script Perl - merci d'avance de votre aide
    Bonjour,

    Mon problème est que je n'ai jamais touché à Perl avant hier, et l'entreprise qui serait susceptible de m'embaucher me demande de réaliser un script pour tester mes capacités.

    Je ne demande qu'à apprendre, mais là ça fait beaucoup d'un coup, j'ai passé presque toute la nuit sur ce script, qui doit convertir un simple fichier texte en fichier d'enregistrement DNS.
    Je dois le rendre aujourd'hui, et ça ne fonctionne toujours pas

    Est-ce que quelqu'un pourrait m'aider ici svp ?

    je poste un ex du fichier d'entrée + mon script foireux au cas où :

    fichier entrée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    paris.zeni.fr
    lille.zeni;fr
    marseille.zen.fr
     
    #
    nîmes.zeni.fr
    chantilly.zeni.fr
    angers.zeni.fr
    st-jean.zeni.fr
    Je ne dois pas tenir compte des lignes commentées, vides, ou qui comprennent des lettres autres que a..z ou point ou tiret => ces lignes vont dans un fichier de rejet

    script :
    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
     
    #!/usr/bin/perl
     
    # test alphabetique
    # remplir une liste avec l'alphabet minuscule plus les points et tirets
     
    @alphabet = ("a".."z");
    $alphabet = '-'.".";
    push(@alphabet,$alphabet);
     
    # initialiser une liste qui contiendra la ligne en cours
     
    @liste = ("");
     
    # ouvrir le fichier d'entrée
    # si non trouvé afficher erreur et quitter
     
    #------------------------------------------------------------------------------------#
     
    $l = 0; #initialise un compteur de lignes
     
    open(FICHIER, "<$ARGV[0]") || die "Fichier d'entrée non trouvé !\n";
     
    #Lire le fichier d'entrée
     
    while(<FICHIER>)
     {
      lecture:
      if($l == 0) # lire la première ligne du fichier
       {
        push(@lignes,$_); #remplir @ligne avec ligne actuelle
       } 
     }
    close(FICHIER);
     
    for (@ligne) #pour chaque ligne lue :
     {
      until($ligne[$i] ne $alphabet[$i]) #et jusqu'à ce qu'un caractère lu ne soit pas compris dans la liste @alphabet
       {
        $i++ #incrémente indice pour parcourir toute la liste @alphabet
     
        @fqdn = split(/./,$ligne); #découper la ligne suivant les points pour avoir : ville, zeni, fr  (si ça ne marche pas essayer avec $_)
     
        if ($fqdn[1] eq 'zeni') and ($fqdn[2] eq 'fr') #si la forme de la liste fqdn correspond à ville, zeni, fr
     
         {
          open(SORTIE, ">hosts") || die "Fichier de sortie non trouvé !\n"; # ouvrir le fichier de sortie pour l'écriture
     
          print($fqdn[0],"\t"x2,IN,"\t",A,"\t",10.0.0.1,"\n","\t"x3,IN,"\t",'MX 1',"mail\.$fqdn[0]\.$fqdn[1]\.$fqdn[2]\.") #écrire le fichier de sortie
     
          $l++
          goto lecture
         else goto rejet
          } #end if
         } #end until
     
    rejet:
    open(REJET, ">hosts.reject") || die "Fichier de rejet non trouvé !\n"; # ouvrir le fichier de rejet pour l'écriture
     
    print("$ligne\.") #écrire le fichier de rejet (si ça ne marche pas essayer avec $_)
    $l++
    goto lecture
    --------------------------------------------------------------------

    et voila les erreurs renvoyées (très nombreuses je le conçois !) :
    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
     
    Array found where operator expected at ./script.pl line 41, near ""
            (Missing semicolon on previous line?)
    Scalar found where operator expected at ./script.pl line 50, near ") #écrire le fichier de sortie
     
          $l"
            (Missing operator before $l?)
    Scalar found where operator expected at ./script.pl line 60, near ") #écrire le fichier de rejet (si ça ne marche pas essayer avec $_)
    $l"
            (Missing semicolon on previous line?)
    syntax error at ./script.pl line 41, near "@fqdn "
    syntax error at ./script.pl line 43, near ") and"
    syntax error at ./script.pl line 50, near ") #écrire le fichier de sortie
     
          $l"
    syntax error at ./script.pl line 60, near ") #écrire le fichier de rejet (si ça ne marche pas essayer avec $_)
    $l"
    Missing right curly or square bracket at ./script.pl line 74, at end of line
    Execution of ./script.pl aborted due to compilation errors.
    Merci par avance de votre aide

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Bonjour,

    Pourrais-tu utiliser les balises codes (icone dièse dans la barre d'outil), ça rendrait ton script plus lisible.
    Je veux bien te conseiller afin d'améliorer ton script mais je n'ai aucune idée du format d'un fichier d'enregistrement DNS. Va faire un tour dans la FAQ et regarde les expressions régulières, cela devrait être utile.

    Voici comment parcourir un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    open(FICHIER, "<$ARGV[0]") || die "Fichier d'entrée non trouvé !\n";
    my $line
     
    while (my $line = <FICHIER>){
    	if ($line ....) {
     
    	}	
    }
     
    close(FICHIER);

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut @jasmine80
    Merci beaucoup pour ta réponse Jasmine80

    J'ai oublié en effet de donner un exemple du fichier de sortie :

    ville1 IN A 10.0.0.1
    IN MX 1 mail.ville1.zeni.fr
    ville2 IN A 10.0.0.1
    IN MX 1 mail.ville2.zeni.fr
    etc...


    j'essaie d'adapter tout ça selon tes conseils, et aussi ceux d'un ami que je poste ici :

    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
    #!/usr/bin/perl
    if ( open (fichier,"zeni.list"))                        # ouverture fichier
    {
            $ligne=<fichier>;                               # lecture premiere ligne
            while ($ligne ne "")
            {
                    print ("\nligne: $ligne\n");
                    if ( $ligne !~ /.*zeni\.fr$/ )          # si la ligne ne se termine pas par zeni.fr
                    {
                            print ("la ligne est rejetee car ne se termine pas par zeni.fr\n") ;
                    }
                    elsif ( $ligne !~ /[0-9a-zA-Z]/ )       # (TEST PAS BON) ou si elle contient des caracteres bizarres
                    {
                            print ("la ligne est rejetee\n");
                    }
                    elsif (0)                               # sinon
                    {
                    print("la ligne est bonne\n");
                    }
                    $ligne=<fichier>;                       # lecture ligne suivante
            }
    close fichier;
    }

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Mais c'est très bien tout ça, ça avance. As-tu encore des messages d'erreur?
    ... elsif(0) c'est étrange ... un simple else ne suffirait il pas? mais attends peut-être l'avis de quelqu'un plus compétent que moi.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Mais c'est très bien tout ça, ça avance. As-tu encore des messages d'erreur?
    ... elsif(0) c'est étrange ... un simple else ne suffirait il pas? mais attends peut-être l'avis de quelqu'un plus compétent que moi.
    Je regarde ça je te fais un retour

    merci

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    J'ai été honnête rassure-toi le responsable sait que je ne connais pas Perl à la base, la condition d'embauche ici est justement de démontrer ma volonté d'implication en apprenant les bases de Perl : on ne s'attend donc pas à un script parfait sans doute...
    C'est bien, tu sembles vraiment motivé. Si tu connais d'autres langages, Perl ne devrait pas être bien difficile à apprendre, me semble-t'il Bon courage

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par fractale69 Voir le message
    Bonjour,

    Mon problème est que je n'ai jamais touché à Perl avant hier, et l'entreprise qui serait susceptible de m'embaucher me demande de réaliser un script pour tester mes capacités.
    Bah je comprends pas comment tu peux dire à l'entreprise qui t'embauche que tu connais perl alors que ce n'est pas le cas .
    Car si tu avais été honnête, il ne t'aurais pas demandé de faire un script.
    De plus, ça se verra sur la conception du script que tu connais perl ou non.


  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    Citation Envoyé par djibril Voir le message
    Bah je comprends pas comment tu peux dire à l'entreprise qui t'embauche que tu connais perl alors que ce n'est pas le cas .
    Car si tu avais été honnête, il ne t'aurais pas demandé de faire un script.
    De plus, ça se verra sur la conception du script que tu connais perl ou non.

    Bonjour Djibril,

    J'ai été honnête rassure-toi le responsable sait que je ne connais pas Perl à la base, la condition d'embauche ici est justement de démontrer ma volonté d'implication en apprenant les bases de Perl : on ne s'attend donc pas à un script parfait sans doute...

Discussions similaires

  1. scenario UML Merci d'avance pour votre aide !
    Par jessicaf dans le forum Cas d'utilisation
    Réponses: 1
    Dernier message: 14/12/2008, 10h29
  2. Besoin d'aide script perl MERCI
    Par la_star160 dans le forum Langage
    Réponses: 1
    Dernier message: 11/08/2008, 12h36
  3. Problème pour exécuter un script Perl
    Par jungle360 dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2006, 14h37
  4. [Newbie] Problème d'appel de script perl
    Par NoCoZ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/02/2006, 17h43
  5. Problème execution script perl
    Par 00sebbe dans le forum Apache
    Réponses: 1
    Dernier message: 29/08/2005, 14h43

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