bonjour a tous,

voila je vous explique un peut mon problème : le script que je cherche a faire

prend en parametres un nom et un prenom et forme un login sur les regles

suivante:

1) le login et une combinaisant de (6 "les premières)lettres du nom)+(1 lettre "la première du prenom)

2) le nom et le prenom e doivent pas comporter d'espace "donc virer les espaces"

3) si le la taille du nom fait moin de 6 caractère on complete du prenom

4) si nom+ prenom fait moins de 6 caractères "ben c'est pas grave"

.......

voici le code

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
 
#!/usr/bin/perl -w
 
my $tmp_var=undef;
my @tmp_tab=undef;
my @nom_prenom=("mi ne","jean pierre");
my $length_name=undef;
my $loginID=undef;
my $cpt=0;
 
print "\nnom_prenom[0]=$nom_prenom[0]\n";
$nom_prenom[0]=~s/ //;
print "\napres l'enlevement des espaces : $nom_prenom[0]\n";
print "\nnom_prenom[1]=$nom_prenom[1]\n";
$nom_prenom[1]=~s/ //;
print "\napres l'enlevement des espaces : $nom_prenom[1]\n";
$length_name=length($nom_prenom[0]);
 
if ($length_name==6) {
	print "\nnom == 6\n";
	$loginID=$nom_prenom[0].substr($nom_prenom[1],0,1);
}elsif ($length_name>6) {
	print "\nnom > 6\n";
	$loginID=substr($nom_prenom[0],0,6).substr($nom_prenom[1],0,1);
}elsif ($length_name<6) {
	print "\nnom <= 6\n";
	$tmp_tab=split(/w/,$nom_prenom[1]);
	print "\n$tmp_tab[0],$tmp_tab[1],$tmp_tab[2],$tmp_tab[3]\n";
	$loginID=$nom_prenom[0];
	while (length($loginID)<=7 && $tmp_tab[$cpt]) {
	$loginID=$tmp_tab[$cpt++];
	}
}
print "\n\n$loginID\n\n";
et voici le resultat de l'execution sous scite :


>perl -w loginid.pl
Use of implicit split to @_ is deprecated at loginid.pl line 26.
Name "main::tmp_tab" used only once: possible typo at loginid.pl line 26.
Use of uninitialized value in concatenation (.) or string at loginid.pl line 27.
Use of uninitialized value in concatenation (.) or string at loginid.pl line 27.
Use of uninitialized value in concatenation (.) or string at loginid.pl line 27.
Use of uninitialized value in concatenation (.) or string at loginid.pl line 27.

nom_prenom[0]=mi ne

apres l'enlevement des espaces : mine

nom_prenom[1]=jean pierre

apres l'enlevement des espaces : jeanpierre

nom <= 6

,,,


mine

>Exit code: 0
je n'arrive pas a enlever quand il ya plusieurs espaces
et je n'arrive pas a faire un split d'un mot
merci de m'aider