Extraire de variables d'un tableau et comparaison de variable
Fermé
Noob_In_Perl
-
7 juin 2013 à 11:15
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 17 juin 2013 à 11:45
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 17 juin 2013 à 11:45
A voir également:
- Perl tableau 2 dimensions
- Tableau word - Guide
- Code ascii tableau - Guide
- Tableau croisé dynamique - Guide
- Trier tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
2 réponses
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
Modifié par [Dal] le 12/06/2013 à 01:00
Modifié par [Dal] le 12/06/2013 à 01:00
Salut,
Tu n'as pas besoin de conserver la taille du array dans une variable, ni de faire un for.
Par ailleurs, je ne vois pas ce qu'est "forceKey" ni ce que tu fais avec ce qui matche.
Pour rechercher si un array contient une valeur, tu peux utiliser l'opérateur ~~ (https://perldoc.perl.org/perlfaq4#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f)
Dal
Tu n'as pas besoin de conserver la taille du array dans une variable, ni de faire un for.
Par ailleurs, je ne vois pas ce qu'est "forceKey" ni ce que tu fais avec ce qui matche.
Pour rechercher si un array contient une valeur, tu peux utiliser l'opérateur ~~ (https://perldoc.perl.org/perlfaq4#How-can-I-tell-whether-a-certain-element-is-contained-in-a-list-or-array%3f)
#!/usr/bin/perl use strict; use warnings; my @SitesA = ( "CD04K7S2B8", "CD04KU7HG5" ); my $Feuillet = "CD04K7S2B8"; if (/$Feuillet/ ~~ @SitesA) { print "Faire quelque chose avec $Feuillet"; }
Dal
Bonjour,
visiblement quelque chose manque encore car même avec ce script ne fonctionne pas.
En fait j' ai des données stocker dans un tableau
VARIABLE | VALEUR
|
$ref_routeur->{feuillet} | CD04K7S2B8
$ref_routeur->{fin_hostname} | tranche
$ref_routeur->{fonction_cpe} | ROUTEUR
$ref_routeur->{hostname} | teffaud-tranche
$ref_routeur->{type_site} | ""
Ce tableau permet d' alimenter une page Web qui est en fait un formulaire PERL
Certains champs sont en lecture seul (comme le champ correspondant à la variable $ref_routeur->{feuillet} et d' autres en lecture/ecriture comme le champ $ref_routeur->{type_site}.
Je souhaite crée un code perl, qui sera automatiquement exécuté lors de mon arrivée sur ce formulaire, ce script contiendra deux tableaux SitesA et SiteB écrit en dur dans mon script.
A mon arrivée sur la page web, le script dois comparer la variable $ref_routeur->{feuillet} de mon formulaire avec le contenu de mes deux tableaux.
Si la variable $ref_routeur->{feuillet} est stockée dans le tableau SiteA, la variable $ref_routeur->{type_site} prendra une valeur donnée. Si c'est dans le tableau Site B, la valeur alors affectée sera différente.
ensuite, le forcekey, ne servira qu'à "bloquer le champ en lecture seul" après affectation de la valeur
visiblement quelque chose manque encore car même avec ce script ne fonctionne pas.
En fait j' ai des données stocker dans un tableau
VARIABLE | VALEUR
|
$ref_routeur->{feuillet} | CD04K7S2B8
$ref_routeur->{fin_hostname} | tranche
$ref_routeur->{fonction_cpe} | ROUTEUR
$ref_routeur->{hostname} | teffaud-tranche
$ref_routeur->{type_site} | ""
Ce tableau permet d' alimenter une page Web qui est en fait un formulaire PERL
Certains champs sont en lecture seul (comme le champ correspondant à la variable $ref_routeur->{feuillet} et d' autres en lecture/ecriture comme le champ $ref_routeur->{type_site}.
Je souhaite crée un code perl, qui sera automatiquement exécuté lors de mon arrivée sur ce formulaire, ce script contiendra deux tableaux SitesA et SiteB écrit en dur dans mon script.
A mon arrivée sur la page web, le script dois comparer la variable $ref_routeur->{feuillet} de mon formulaire avec le contenu de mes deux tableaux.
Si la variable $ref_routeur->{feuillet} est stockée dans le tableau SiteA, la variable $ref_routeur->{type_site} prendra une valeur donnée. Si c'est dans le tableau Site B, la valeur alors affectée sera différente.
ensuite, le forcekey, ne servira qu'à "bloquer le champ en lecture seul" après affectation de la valeur
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
17 juin 2013 à 11:45
17 juin 2013 à 11:45
visiblement quelque chose manque encore car même avec ce script ne fonctionne pas
Mon script est un exemple d'usage de l'opérateur ~~ pour rechercher si un array contient une valeur. Il n'est pas destiné à être intégré tel quel dans ton code (dont, visiblement on n'a qu'une partie).
Je ne connais pas "forceKey" en Perl. Et Perldoc non plus : http://perldoc.perl.org/search.html?q=forceKey. Ta syntaxe $self->forceKey(-key=>"{type_site}"); ressemble à l'appel à une méthode définie dans un objet Perl, qui doit être définit dans ton code. Je ne peux pas t'aider sur cette partie, car je ne sais pas de quoi il s'agit. Si tu sais ce que tu fais sur cette partie, c'est bien. De même, "$ref_routeur" ressemble aussi à un objet Perl, dont tu utilises le champ "feuillet".
Sinon, pour le reste du descriptif de ce que tu veux faire, c'est assez simple, sur la base du code que tu as posté, d'intégrer ma proposition. Cela donne le code simple suivant, que je ne peux pas tester, car je n'ai pas ton environnement d'exécution :
Dal
Mon script est un exemple d'usage de l'opérateur ~~ pour rechercher si un array contient une valeur. Il n'est pas destiné à être intégré tel quel dans ton code (dont, visiblement on n'a qu'une partie).
Je ne connais pas "forceKey" en Perl. Et Perldoc non plus : http://perldoc.perl.org/search.html?q=forceKey. Ta syntaxe $self->forceKey(-key=>"{type_site}"); ressemble à l'appel à une méthode définie dans un objet Perl, qui doit être définit dans ton code. Je ne peux pas t'aider sur cette partie, car je ne sais pas de quoi il s'agit. Si tu sais ce que tu fais sur cette partie, c'est bien. De même, "$ref_routeur" ressemble aussi à un objet Perl, dont tu utilises le champ "feuillet".
Sinon, pour le reste du descriptif de ce que tu veux faire, c'est assez simple, sur la base du code que tu as posté, d'intégrer ma proposition. Cela donne le code simple suivant, que je ne peux pas tester, car je n'ai pas ton environnement d'exécution :
### Tableau des sites A ### my @SitesA = ( "CD04K7S2B8", "CD04KU7HG5" ); ### Tableau des sites B ### my @SitesB = ( "CD04K7UFCC", "CD15SDFRG5" ); my $Feuillet = $ref_routeur->{feuillet}; my $Site = $ref_routeur->{type_site}; if (/$Feuillet/ ~~ @SitesA) { $Site = 'Site_Central'; $self->forceKey(-key=>"{type_site}"); } if (/$Feuillet/ ~~ @SitesB) { $Site = 'Site_Distant'; $self->forceKey(-key=>"{type_site}"); }
Dal