Création d'une variable avec un "print" | Perl
Résolu/Fermé
Matarela
Messages postés
9
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
29 janvier 2014
-
30 sept. 2013 à 11:46
Matarela Messages postés 9 Date d'inscription lundi 30 septembre 2013 Statut Membre Dernière intervention 29 janvier 2014 - 8 oct. 2013 à 14:25
Matarela Messages postés 9 Date d'inscription lundi 30 septembre 2013 Statut Membre Dernière intervention 29 janvier 2014 - 8 oct. 2013 à 14:25
A voir également:
- Création d'une variable avec un "print" | Perl
- Print artist - Télécharger - Loisirs créatifs
- Print pratic - Télécharger - Photo & Graphisme
- Creation compte gmail - Guide
- Création compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
2 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
30 sept. 2013 à 17:12
30 sept. 2013 à 17:12
Salut Matarela,
J'ai deux questions (1. et 2. ci-dessous), et un exemple de code pour toi (3.).
Je m'arrête au 1er bout de ton code pour le moment :
1.
Utilisé de cette façon, grep va passer en revue les éléments du tableau @communities et tester ce qui est dans le block, mettre chaque élément dans $_ et effectuer le test {$community eq $_ }.
Est-ce vraiment cela que tu veux faire : tester que la chaîne $_ (chaque élément du tableau) est égale à la chaîne $community ?
Ton commentaire semble indiquer autre chose.
2.
Cependant :
- tu n'auras pas la liste de ces éléments
- ce qui suit le if ne sera exécuté qu'une fois, si au moins un élément remplit la condition
Plus loin, tu utilises @matchs dans un push où tu mets le contenu de $community_matchs.
Qu'est-ce que $community_matchs est sensée contenir ?
Quel est le rapport avec les résultats du grep ?
Au final, pour y voir plus clair, je crois qu'il faudrait un exemple de données de départ et de ce que tu veux.
Peux-tu donner un tel exemple, stp ?
3.
Sinon, voilà un exemple d'usage de grep comme tu le fais :
Cela affiche :
Dal
J'ai deux questions (1. et 2. ci-dessous), et un exemple de code pour toi (3.).
Je m'arrête au 1er bout de ton code pour le moment :
if (grep {$community eq $_ } @communities) {.
1.
Utilisé de cette façon, grep va passer en revue les éléments du tableau @communities et tester ce qui est dans le block, mettre chaque élément dans $_ et effectuer le test {$community eq $_ }.
Est-ce vraiment cela que tu veux faire : tester que la chaîne $_ (chaque élément du tableau) est égale à la chaîne $community ?
Ton commentaire semble indiquer autre chose.
2.
if (grep {$community eq $_ } @communities) {va retourner vrai si au moins un élément remplit la condition.
Cependant :
- tu n'auras pas la liste de ces éléments
- ce qui suit le if ne sera exécuté qu'une fois, si au moins un élément remplit la condition
Plus loin, tu utilises @matchs dans un push où tu mets le contenu de $community_matchs.
Qu'est-ce que $community_matchs est sensée contenir ?
Quel est le rapport avec les résultats du grep ?
Au final, pour y voir plus clair, je crois qu'il faudrait un exemple de données de départ et de ce que tu veux.
Peux-tu donner un tel exemple, stp ?
3.
Sinon, voilà un exemple d'usage de grep comme tu le fais :
#!/usr/bin/perl
use strict;
use warnings;
my $community = "men";
my @communities = qw(elves dwarves men hobbits ents);
my ($login,$last_at,$size);
my @matchs;
my $community_matchs;
$login = "toto";
$last_at = "truc";
$size = "pas bien gros";
if (grep {$community eq $_ } @communities) {
# Si on trouve des $community dans @communities alors
print "$community;$login;$last_at;;$size;1\n";
# j'ignore ce qu'est sensée faire la ligne suivante,
push (@matchs, $community_matchs);
}
Cela affiche :
men;toto;truc;;pas bien gros;1
Dal
Matarela
Messages postés
9
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
29 janvier 2014
8 oct. 2013 à 14:25
8 oct. 2013 à 14:25
Merci beaucoup Dal, tu m'as un peu aidé même si j'ai trouvé la solution toute seule.
Bonne continuation Matarela.
Bonne continuation Matarela.
Modifié par [Dal] le 30/09/2013 à 17:22
Le grep de Perl retourne un tableau.
https://perldoc.perl.org/functions/grep
Là, le tableau n'est pas affecté et est implicitement évalué dans un contexte scalaire dans ton if.
C'est du Perl tout à fait valable, puisque si le tableau est vide le if est évalué à faux, s'il contient des données le tableau sera évalué à son nombre d'éléments (une valeur non nulle étant "vrai" en Perl). Mais on fait mieux en termes de lisibilité... et j'ai comme dans l'idée que ce n'est pas ce que tu veux faire, en fait, non seulement ce niveau, mais aussi au niveau du test.
Comme demandé, pour y voir plus clair, il faudrait un exemple de données de départ et de ce que tu veux.
Dal