[Perl] Autoconstruire du code perl dans un switch

Patrice Karatchentzeff patrice.karatchentzeff at gmail.com
Ven 5 Juil 08:53:38 CEST 2024


Excellente qualité :)

Pour info, il faut déférencer, sinon cela ne fonctionne pas :

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

eu lieu de

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

(sinon, on récupère seulement l'élément 1 et pas le couple)

Merci encore pour la bonne idée...

Le jeu. 4 juil. 2024 à 11:24, Guerlais, Patrice (ITOP TD) - AF <
paguerlais at airfrance.fr> a écrit :

> 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> 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 <perl-bounces at mongueurs.net> De la
>
> > part de Patrice Karatchentzeff Envoyé : mercredi 3 juillet 2024 09:47
>
> > À : Perl <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
> <patrice.karatchentzeff at gmail.com>
>
> >      |,4-  ) )-,_. ,\ (  `'-'
>
> >     '---''(_/--'  `-'\_)
>
> > _______________________________________________
>
> > Perl mailing list
>
> > 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
>
> > http://listes.mongueurs.net/mailman/listinfo/perl
>
> > Attention, les archives sont publiques
>
>
>
>
>
>
>
> --
>
>       |\      _,,,---,,_           Patrice KARATCHENTZEFF
>
> ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com
> <patrice.karatchentzeff at gmail.com>
>
>      |,4-  ) )-,_. ,\ (  `'-'
>
>     '---''(_/--'  `-'\_)
>
> _______________________________________________
>
> Perl mailing list
>
> Perl at mongueurs.net
>
> http://listes.mongueurs.net/mailman/listinfo/perl
>
> Attention, les archives sont publiques
>
> <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
> http://listes.mongueurs.net/mailman/listinfo/perl
> Attention, les archives sont publiques
>


-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://listes.mongueurs.net/archives/perl/attachments/20240705/868efb1b/attachment-0001.html>


Plus d'informations sur la liste de diffusion Perl