Bonjour tlm,
j'essaie de garder dans un tableau 3 valeurs:
@tabvals=($name, $type);
$tabi[$i]=@tabvals;
Après je veux chercher, pour une valeur de i donnée, quelles sont les valeurs $name et $type qui lui correspondent?
Merci d'avance
Bonjour tlm,
j'essaie de garder dans un tableau 3 valeurs:
@tabvals=($name, $type);
$tabi[$i]=@tabvals;
Après je veux chercher, pour une valeur de i donnée, quelles sont les valeurs $name et $type qui lui correspondent?
Merci d'avance
Bonjour,
Utilisez des hash et lisez notre FAQ pour comprendre comment manipuler des tableaux et des hash.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Pour poursuivre avec la solution de Djibril :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 use feature qw(:5.10); my @tabvals = ( { name => "Vache", type => "Végétarien" }, { name => "Chat", type => "Carnivore" }, { name => "Ours", type => "Omnivore" }, ); foreach my $vals (@tabvals) { say join ":", $vals->{name}, $vals->{type}; } say "L'élément d'indice 2 contient : ", join ",", $tabvals[2]->{name}, $tabvals[2]->{type};
Bonjour a tous,
merci pour votre réponse,
mon probleme, c'est que j'ai deux fichiers similaires, contenant a peu pres les memes données, et je veux rechercher certains mots qui se trouvent dans le premier fichier, et les tagger dans le deuxième fichier...
La solution que j'ai trouvé c'est créer une liste des mots du premier fichier, tout en extrayant le type, en meme temps que le nom, et ensuite rechercher ces mots un par un dans le deuxième fichier pour leur attribuer le type correspondant.
Il s'agit de faire des boucles.
mais ça marche pas
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 TAGLINE: while($line=<TAG>) { chop($line); if (($line =~ m/<gsp/) || ($line =~ m/<pers/) || ($line =~ m/<inc/) || ($line =~ m/<temps/) || ($line =~ m/<org/) || ($line =~ m/<quantité/) || ($line =~ m/<lieu/) || ($line =~ m/<constr/) || ($line =~ m/var>/)){ $name=(split(/>/,$line))[1]; $nameok=(split(/</,$name))[0]; $nameok2=(split(/</,$line))[0]; if ($nameok2 =~ /\d+/){ $nameok=$nameok2." ".$nameok; } ($type, $truc) = $line =~ /<([^> ]+)([^>]?)>/; @tabvals=($nameok, $type); $tabi[$i]=@tabvals; $i++; }else{ next TAGLINE; } $long =$tabi.length; $size = @tabi; } my $j=0; while ($linetotag=<TOTAG>){ while ($j<= $size){ if ($linetotag =~ m/@tabvals[0]/){ my ($val1,$val2)=@tabi[$j]; $j++; } } }j'ai déja essayé les hash, mais j'ai toujours pas trouvé de solution...
Précise ce qui ne marche pas. Est-ce que tes tableaux contiennent bien ce que tu veux à la fin de la lecture du premier fichier?
Remarques de style:
- utilise la fonction chomp plutôt que chop
- pour créer une nouvelle case dans un tableau utilise plutôt push ou unshift plutôt que d'itérer sur $i
- l'instruction "else{ next TAGLINE;} ne sert à rien.
- "while ($j<= $size){...$j++" il vaut mieux itérer sur le tableau avec un foreach
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
- oui le premier tableau contient les valeurs quand je fais print "@tabvals";
- c'est quoi la différence entre chomp et chop?
- si je fais un push, il faut faire une boucle?
Le problème c'est que je veux chercher les valeurs existants dans le premier tableau, dans un fichier.
Si je trouve une valeur dans le tableau, je continue à parcourir le fichier à la position p, et le tableau à la position t, je ne veux pas reparcourir les deux fichiers dès le début, c'est pour cela que je n'ai pas utilisé for
Partager