Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
994 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [perl] le meilleur moyen pour ramener une valeur ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[perl] le meilleur moyen pour ramener une valeur ?

n°2006130
nono 63
Posté le 30-06-2010 à 17:11:09  profilanswer
 

Salut à tous,
je débute en perl et je cherche le meilleur moyen de faire un chose simple : une correspondance de valeur.
En gros de 0 à 5, j'aimerais que ça me retourne 1; de 6 à 10 me retourne 2 etc..
J'ai pensé à un tableau indicé mais je n'arrive pas à mes fins :

Code :
  1. my %test=([0..5]=>1, [6..10]=>2);
  2. print $test{1};


 
Est-ce la bonne méthode pour ce genre de manipulation de données ?


---------------
Mon topic Achat/ventes : http://forum.hardware.fr/hfr/Achat [...] 2496_1.htm
mood
Publicité
Posté le 30-06-2010 à 17:11:09  profilanswer
 

n°2006147
gilou
Modérateur
Modzilla
Posté le 30-06-2010 à 19:20:16  profilanswer
 

Si c'est un hash que tu veux obtenir, je ferais:
my %test;
map { $test{$_} = 1 } 0..5, map { $test{$_} = 2 } 6..10;
 
mais n'est ce pas plutôt d'une fonction dont tu aurais besoin?
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2006426
nono 63
Posté le 01-07-2010 à 18:57:27  profilanswer
 

Merci pour le map  ça marche très bien :jap:  
 
Dans quel cas une fonction pourrait être utile ?
 
En fait, je souhaite créer un tableau double entrée du style :
 
Poids / Pays     France          USA
jusqu'à 5kg         1                9
Jusqu'à 10kg       2               10
 
 
 mais l'une de mes valeur clé étant un poids (donc pas forcément entier) je pense qu'il va falloir que je passe par des if .. elsif.


---------------
Mon topic Achat/ventes : http://forum.hardware.fr/hfr/Achat [...] 2496_1.htm
n°2006437
gilou
Modérateur
Modzilla
Posté le 01-07-2010 à 19:51:38  profilanswer
 

Donc en fait, tu veux plutôt une fonction qui prend en entrée une valeur, et renvoie en retour un hash.
Je vais bouffer, et je te pond une réponse plus complète.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2006454
gilou
Modérateur
Modzilla
Posté le 01-07-2010 à 21:39:15  profilanswer
 

Tu peux t'inspirer de ce petit script, que tu vas appeller avec: perl myscript.pl XX
ou myscript.pl est le nom du fichier du script et XX  un nombre à tester pour le poids.
 

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use Switch;
  6.  
  7. sub weight {
  8.    switch (shift) {
  9.        # is it a number? if not: error
  10.        case { $_[0] !~ /^-?(?:\d+(?:\.\d*)?|\.\d+)$/ }
  11.                   { return {France => "erreur: ce n'est pas un nombre", USA => 'error: not a number'}}
  12.        # it is a number
  13.        case { $_[0] <= 0 }  { return {France => 'erreur: trop petit', USA => 'error: too small'}}
  14.        case { $_[0] <= 10 } { return {France => '1', USA => '9'}}
  15.        case { $_[0] <= 20 } { return {France => '2', USA => '10'}}
  16.        else                 { return {France => 'erreur: trop grand', USA => 'error: too large'}}
  17.    }
  18. }
  19.  
  20. my $code = weight($ARGV[0]);
  21. print $code->{France}, " ", $code->{USA}, "\n";


Il ne te reste plus ensuite qu'à adapter à tes besoins.
A+,
 
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2006729
nono 63
Posté le 02-07-2010 à 18:55:04  profilanswer
 

Génial ! Merci.  :bounce:  
je ne connaissais pas le module Switch mais c'est très pratique.
 
Juste une question : le switch(shift) c'est parce que l'argument passé en paramètre de la fonction est un tableau ?


---------------
Mon topic Achat/ventes : http://forum.hardware.fr/hfr/Achat [...] 2496_1.htm
n°2006738
gilou
Modérateur
Modzilla
Posté le 02-07-2010 à 19:16:03  profilanswer
 

C'est juste équivalent à

Code :
  1. sub weight {
  2.    my $toto = shift;
  3.    switch ($toto) {

mais ça évite de définir une variable explicite inutile ($toto ici);
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [perl] le meilleur moyen pour ramener une valeur ?

 

Sujets relatifs
Problème pour modifier la valeur d'une ligne dans un fichierSuppression valeur dans registre suivant une chaine de caractère
Est-ce possible en perl ?Faire remonter une valeur dans une page
[perl] Traitement de fichier .csv[perl] envoie de trap SNMPv3
java Regex : Je recherche le moyen d'extraire des lettresRecupérer la valeur d'un slider js
Remplacement de valeur en Javascriptrecuperer valeur d'un select jquery
Plus de sujets relatifs à : [perl] le meilleur moyen pour ramener une valeur ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR