Bonjour !
J'ai un petit probleme, et je pense que vous devriez pouvoir m'aider ^-^

J'ai écris un script qui me permet de modifier un fichier présent sur mon disque dur.
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/perl -pi
use MIME::Base64;
use warnings;
 
# Initialisation du programme
my $sn_exists; my $cn_exists;
my $basedn; my $unknow_index;
my $prefix;
my $unknown_index;
 
if(not defined $sn_exists){
  $sn_exists = 0;
  $cn_exists = 0;
  # Chemin de la base LDAP ou seront stockés les contacts
  $basedn=",ou=ditiric,ou=carnets,dc=entreprise,dc=fr";
  $unknown_index = 1;
}
 
	if($_ =~ /^sn:/){
		$sn_exists = 1;
	}
 
	if($_ =~ /^cn:/){
		$cn_exists = 1;
	}
 
	if($_ =~ /^$/){
		if($sn_exists == 0){
			print "sn: not given\n";
		}
 
		# Si l'attribut "cn" n'existe pas, on doit en créer un
		# sinon LDAP va compléter le champ avec LDAP_NAMING_VIOLATION
 
	if($cn_exists == 0){
		print "cn: " . $cn . "\n";
	}
 
	$sn_exists = 0;
	$cn_exists = 0;
	}
 
	# On décode les lignes encodée en BASE64 pour notre substitution
	if($_ =~ /^(\w+):: (.*)/){
		$_ = sprintf("%s: %s\n", $1, decode_base64($2));
	}
 
# On doit vérifier l'attribut "cn" de la ligne "dn" car certains contacts
# n'ont pas d'attribut "mail=" définit, on doit donc ajouter notre champ
# à la fin de la ligne
if($_ =~ /^(dn:+\s*)/){
  $prefix = $1;
  $cn = $_;
 
  # On enlève le retour à la ligne
  chop $cn;
 
  # Extraction du champ cn de la ligne dn
  $cn =~ s/^dn:+\s*cn=([^=]+)(,\s*mail=.*)??$/$1/;
 
  # Si la ligne cn n'est pas renseignée, elle doit commencer par "dn:"
  # on doit donc vérifier cela, et donner un nom unique pour cette entrée
 
  if($cn =~ /^dn:/){
	$cn = "NoName " . $unknown_index++;
  }
 
  # On effectue une vérification sur le champ cn (pas de virgules)
  $cn =~ s/,/ /g;
 
  # On créer un nouveau champ "dn"
  $_ = $prefix . "cn=" . $cn . $basedn . "\n";
}
 
	if($_ =~ /^(cn:+\s*)/){
		$_ = $1 . $cn . "\n";
	}
 
# Suppression ou modification des champs inutiles, et non reconnu par Iplanet Directory Server
s/^homeStreet:/mozillaHomeUrl:/;
s/^modifytimestamp.*\n//;
s/^xmozillausehtmlmail.*\n//;
s/^nsAIMid.*\n//;
 
# Modification des champs Objectclass et ajout du champ groupeunix (necessaire pour les ACL)
s/^objectclass: mozillaAbPersonObsolete.*\n//;
s/^objectclass: mozillaAbPersonAlpha.*\n//;
s/^objectclass: organizationalPerson.*\n//;
s/^objectclass: mozillaOrgPerson*\n//;
s/^objectclass: inetOrgPerson.*/groupeunix: ditiric/;
s/^objectclass: person.*/objectclass: extensibleObject/;
Pour le lancer, j'execute la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
perl script.pl nom_du_fichier_surlequel_appliquer_le_script
Ce que je souhaite faire, c'est choisir le fichier surlequel appliquer le script à partir d'une page en php, et des que j'appuis sur la touche convertir, que le script s'applique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<body>
  <table border="0" valign="center" cellpadding="0" cellspacing="0" height="100%" width="100%">
   <tr>
      <td>
      <form name="conversion" action="thunderbird_to_ldif.pl" method="post" enctype="multipart/form-data">
      <input type="submit" value="Convertir le fichier">
      </form>
      </td>					
  </tr>
  </table>
</body>
</html>
Je ne vois pas trop comment modifier mon script Perl pour y arriver.
Auriez vous des idées ?