[Perl] Autoconstruire du code perl dans un switch

Guerlais, Patrice (ITOP TD) - AF paguerlais at airfrance.fr
Jeu 4 Juil 11:14:48 CEST 2024


J'aime bien la logique KISS, je suis très feignant (pas paresseux !) 😉



-----Message d'origine-----
De : perl-bounces at mongueurs.net <perl-bounces at mongueurs.net> De la part de Patrice Karatchentzeff
Envoyé : mercredi 3 juillet 2024 17:22
À : Liste francophone pour les questions générales sur Perl <perl at mongueurs.net>
Objet : Re: [Perl] Autoconstruire du code perl dans un switch



Désolé, je n'avais pas vu ta réponse...



Effectivement, l'idée est bonne et m'évite de passer par un eval.

J'étais obsédé par l'idée de réécrire le même code, alors que ton idée le simplifie : c'est une bien meilleure approche !



Merci



Le mer. 3 juil. 2024 à 10:11, Guerlais, Patrice (ITOP TD) - AF <paguerlais at airfrance.fr<mailto:paguerlais at airfrance.fr>> a écrit :

>

> Bonjour,

>

> je ne suis pas sûr de comprendre pas ce que tu veux faire : tel que je

> comprends ton code qui fonctionne, tu initialises deux variables

> $search et $target avec des valeurs qui dépendent de $choice, puis

> probablement (non montré) tu fais un traitement avec elles. Ok

>

> Dans ta deuxième version, et toujours si je comprends ce que tu veux faire, tu veux récupérer le n-ième (n généré aléatoirement) couple de valeurs depuis un tableau, affecter les valeurs à deux variables ($search et $target), puis probablement (non montré) faire un traitement dessus. Pour ça tu précharges le fichier dans un tableau pour éviter de le relire à chaque itération. Alors pourquoi t'embêter avec switch/case, puisque tu récupères immédiatement les valeurs dans le tableau ?

>

> # Pré-chargement de @tab

> ...

>

> while (1)

> {

>         ($search, $target) = $tab[randomize(@tab)]->[0..1] ;

>

>         # probablement un traitement autour de $search et $target ici

>         ...

> }

>

> Mais j'ai peut-être tout compris de travers...

> Patrice

>

>

> -----Message d'origine-----

> De : perl-bounces at mongueurs.net<mailto:perl-bounces at mongueurs.net> <perl-bounces at mongueurs.net<mailto:perl-bounces at mongueurs.net>> De la

> part de Patrice Karatchentzeff Envoyé : mercredi 3 juillet 2024 09:47

> À : Perl <perl at mongueurs.net<mailto:perl at mongueurs.net>> Objet : [Perl] Autoconstruire du code

> perl dans un switch

>

> Salut,

>

> J'ai un code qui fonctionne bien :

>

> while (1) {

>   $choice = randomize(3);

>

>   switch($choice) {

>     case 1  {($search, $target) = ("truc1", "truc2") };

>     case 2  {($search, $target) = ("truc3", "truc4")} ;

>     case 3  {($search, $target) = ("truc5", "truc6")};

>   };

>

> Pour automatiser mon code, j'extrait les « trucs » désormais d'un fichier et je les place dans un tableau de tableau. La longueur du tableau peut varier selon le nombre de lignes de « trucs ». Je voudrais auto-générer le code de mon switch :

>

> while (1) {

>   $choice = randomize(scalar(@tab);

>   switch($choice) {

>   for my $line (0..scalar(@tab) {

>        eval case, $line+1, "{(\$search, \$target) = (\"$tab[$line][0]\", \"$tab[$line][1]\") }"; }

>   };

>

> J'ai alors un Bad case statement (invalid case value?). Donc le

> $line+1 ne passe pas (si je fais un print à la place du eval, le code perl est correct.

>

> Qu'est-ce que je rate ?

>

> Merci

>

> PK

>

> --

>       |\      _,,,---,,_           Patrice KARATCHENTZEFF

> ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com

>      |,4-  ) )-,_. ,\ (  `'-'

>     '---''(_/--'  `-'\_)

> _______________________________________________

> Perl mailing list

> Perl at mongueurs.net<mailto:Perl at mongueurs.net>

> http://listes.mongueurs.net/mailman/listinfo/perl

> Attention, les archives sont publiques

> [https://img.static-af.com/images/media/C031A655-6574-400A-A8754B3A9D2

> BD37E/source/logo-af-215x60]<http://www.airfrance.com>

> --

>

> Accédez aux meilleurs tarifs Air France, gérez vos réservations et

> enregistrez-vous en ligne sur http://www.airfrance.com Find best Air

> France fares, manage your reservations and check in online at

> http://www.airfrance.com ________________________________ Les données

> et renseignements contenus dans ce message peuvent être de nature

> confidentielle et soumis au secret professionnel et sont destinés à

> l'usage exclusif du destinataire dont les coordonnées figurent ci-dessus. Si vous recevez cette communication par erreur, nous vous demandons de ne pas la copier, l'utiliser ou la divulguer. Nous vous prions de notifier cette erreur à l'expéditeur et d'effacer immédiatement cette communication de votre système. Société Air France - Société anonyme au capital de 126 748 775 euros - RCS Bobigny (France) 420 495 178 - 45, rue de Paris, Tremblay-en-France, 95747 Roissy Charles de Gaulle CEDEX The data and information contained in this message may be confidential and subject to professional secrecy and are intended for the exclusive use of the recipient at the address shown above. If you receive this message by mistake, we ask you not to copy, use or disclose it. Please notify this error to the sender immediately and delete this message from your system. Société Air France - Limited company with capital of 126,748,775 euros - Bobigny register of companies (France) 420 495 178 - 45, rue de Paris, Tremblay-en-France, 95747 Roissy Charles de Gaulle CEDEX ________________________________ Pensez à l'environnement avant d'imprimer ce message.

> Think of the environment before printing this mail.

> _______________________________________________

> Perl mailing list

> Perl at mongueurs.net<mailto:Perl at mongueurs.net>

> http://listes.mongueurs.net/mailman/listinfo/perl

> Attention, les archives sont publiques







--

      |\      _,,,---,,_           Patrice KARATCHENTZEFF

ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com

     |,4-  ) )-,_. ,\ (  `'-'

    '---''(_/--'  `-'\_)

_______________________________________________

Perl mailing list

Perl at mongueurs.net<mailto:Perl at mongueurs.net>

http://listes.mongueurs.net/mailman/listinfo/perl

Attention, les archives sont publiques

[https://img.static-af.com/images/media/C031A655-6574-400A-A8754B3A9D2BD37E/source/logo-af-215x60]<http://www.airfrance.com>
--

Accédez aux meilleurs tarifs Air France, gérez vos réservations et enregistrez-vous en ligne sur http://www.airfrance.com
Find best Air France fares, manage your reservations and check in online at http://www.airfrance.com

________________________________
Les données et renseignements contenus dans ce message peuvent être de nature confidentielle et soumis au secret professionnel et sont destinés à l'usage exclusif du destinataire dont les coordonnées figurent ci-dessus. Si vous recevez cette communication par erreur, nous vous demandons de ne pas la copier, l'utiliser ou la divulguer. Nous vous prions de notifier cette erreur à l'expéditeur et d'effacer immédiatement cette communication de votre système. Société Air France - Société anonyme au capital de 126 748 775 euros - RCS Bobigny (France) 420 495 178 - 45, rue de Paris, Tremblay-en-France, 95747 Roissy Charles de Gaulle CEDEX
The data and information contained in this message may be confidential and subject to professional secrecy and are intended for the exclusive use of the recipient at the address shown above. If you receive this message by mistake, we ask you not to copy, use or disclose it. Please notify this error to the sender immediately and delete this message from your system. Société Air France - Limited company with capital of 126,748,775 euros - Bobigny register of companies (France) 420 495 178 - 45, rue de Paris, Tremblay-en-France, 95747 Roissy Charles de Gaulle CEDEX
________________________________
Pensez à l'environnement avant d'imprimer ce message.
Think of the environment before printing this mail.
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/archives/perl/attachments/20240704/a0fece9a/attachment-0001.html>


Plus d'informations sur la liste de diffusion Perl