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