Donc voila je cherche comment ont peut envoyer plusieur donné a un programme et les récupérer dans celui si
par exemple
Code:
1
2 $p = extor($p, $maison, @links);
Code:
1
2
3
4
5
6 sub extor { # ONT RECUPERE comment }
Thanks
Version imprimable
Donc voila je cherche comment ont peut envoyer plusieur donné a un programme et les récupérer dans celui si
par exemple
Code:
1
2 $p = extor($p, $maison, @links);
Code:
1
2
3
4
5
6 sub extor { # ONT RECUPERE comment }
Thanks
Mes cours sont faits pour ça !
Avec le tableau @_, tu récupères tes variables. Pour le tableau, c'est encore plus simple si tu envoies la référence.
@++
Un petit exemple, certes très bête pour illustrer le propos :
Ce code doit afficher la chaîne concaténée suivante :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 sub func { $s = $_[0]; foreach $w (@{$_[1]}){ $s.=$w." "; } return $s; } @tab = qw/toto titi tata/; $ref = \@tab; $w1 = "La liste : "; $string = func($w1, $ref); print $string;
@++Code:La liste : toto titi tata
Oki 'est compris continuons dans les question bêtes :oops: , j'ai une liste d'extensionet un scalaire $link que je souhaite comparé pour que ma fonction de trie me renvoie 1 si le lien dans le scalaire a un " extention " autorisé sinon 0 si il est pas authorisé seulement je ne connais pas d'autre fonctions que sort en perlCitation:
@ext = qw/htm asp aspx cfm /;
Y a t'il d'autres fonctions ???
Il y a d'autres fonctions ...
On en parle dans la FAQ, dans les fonctions surpuissantes pour les listes
Dans ton cas, la fonction grep me parait fort indiquée ...
Ca devrait pouvoir te servir ...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 @e=qw (txt gif bmp); if (grep ({ /^bmp$/ } @e)) { # ou if (grep ({ $_ eq 'bmp' } @e)) { print "BMP Trouve\n"; } else { print "BMP Pas Trouve\n"; } if (grep ({ /^jpg$/ } @e)) { # ou if (grep ({ $_ eq 'jpg' } @e)) { print "JPG Trouve\n"; } else { print "JPG Pas Trouve\n"; }
Salut
Voici un petit code dans ce cas :
Bon, par contre, l'algo pour trouver l'extension mériterait d'être affinée (utilisation d'une regexp), mais c'est pour te montrer l'esprit que doit avoir ta fonction. sort ne sert qu'à trier lexicalement ta liste.Code:
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 sub func { $pos = rindex($_[0], "."); $ext = substr($_[0],$pos+1,3); foreach $cmp (@{$_[1]}){ if($ext eq $cmp){ return 1; } } return 0; } @ext = qw/htm asp aspx cfm/; $ref = \@ext; $link1 = "http://perl.developpez.com/faq/index.php"; $link2 = "http://toto.developpez.com/hello.htm"; $res = func($link1, $ref); if($res==0){ print "$link1 n'est pas autorisé.\n"; } else { print "$link1 est autorisé.\n"; } $res = func($link2, $ref); if($res==0){ print "$link2 n'est pas autorisé.\n"; } else { print "$link2 est autorisé.\n"; }
@++
Arrgghhhhhhhhhhhhh !
Grillé par 2Eurocents !
Merci a tous pour votre aide :D
Comment fait ont pour remplacer bmp par exemple pas une liste parce que j'ai essayer ben perl veut pas :?
Citation:
if (grep ({ /^bmp$/ } @e)) {
Code:
1
2
3
4
5
6
7
8
9
10 @e=qw (txt gif bmp); if (grep ({ /^bmp$/ } @e)) { # ou if (grep ({ $_ eq 'bmp' } @e)) { print "BMP Trouve\n"; } else { print "BMP Pas Trouve\n"; } }
Il faut remplacer l'expression rationnelle ^bmp$ par une autre, cohérente ... Cela revient à trouver une liste dans une autre ...Citation:
Envoyé par shinux2004
J'explique ...
Est-ce plus clair, pour toi ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 @e=qw (txt gif bmp); # On constitue notre liste dans laquelle rechercher if (grep ({ /^bmp$/ } @e)) { # On recherche précisément bmp (sans rien devant ni derrière) dans cette liste # if (grep ({ $_ eq 'bmp' } @e)) { # Serait une autre syntaxe possible, # sans expression rationnelle, mais avec une égalité de chaine # if (grep ({ /^(bmp|jpg)$/ } @e)) { # chercherait bmp ou jpg (donc potentiellement les deux) # if (grep ({ ($_ eq 'bmp') or ($_ eq 'jpg' } @e)) { # chercherait aussi les chaines bmp ou jpg dans notre liste print "Trouve\n"; } else { print "Pas Trouve\n"; } }