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 :
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10paris.zeni.fr lille.zeni;fr marseille.zen.fr # nîmes.zeni.fr chantilly.zeni.fr angers.zeni.fr st-jean.zeni.fr
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 !) :
Merci par avance de votre aide
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.
Partager