From patrice.karatchentzeff at gmail.com Wed Jul 3 09:47:26 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Wed, 3 Jul 2024 09:47:26 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch Message-ID: 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- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) From paguerlais at airfrance.fr Wed Jul 3 10:11:22 2024 From: paguerlais at airfrance.fr (Guerlais, Patrice (ITOP TD) - AF) Date: Wed, 3 Jul 2024 08:11:22 +0000 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: 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 De la part de Patrice Karatchentzeff Envoyé : mercredi 3 juillet 2024 09:47 À : Perl 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 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] -- 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. From stephane.teletchea at univ-nantes.fr Wed Jul 3 12:11:02 2024 From: stephane.teletchea at univ-nantes.fr (=?UTF-8?B?U3TDqXBoYW5lIFTDqWxldGNow6lh?=) Date: Wed, 3 Jul 2024 12:11:02 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: <239d64d0-6447-465c-a506-e90f68ed94cf@univ-nantes.fr> Hello, A tout hasard, tu ne fais pas une lecture de trop dans la boucle ? 0..scalar(@tab) -> 0..scalar(@tab*)-1* Sinon, pas bien regardé en détail :-) HTH, Stéphane Le 03/07/2024 à 09:47, Patrice Karatchentzeff a écrit : > 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 > -- Assistant Professor, USBB, UMR 6286 CNRS, Bioinformatique Structurale UFR Sciences et Techniques, 2, rue de la Houssinière, Bât. 25, 44322 Nantes cedex 03, France Tél : +33 251 125 636 / Fax : +33 251 125 632 http://www.us2b.univ-nantes.fr/ -http://www.steletch.org -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From philippe.bruhat at free.fr Wed Jul 3 13:44:12 2024 From: philippe.bruhat at free.fr (Philippe Bruhat (BooK)) Date: Wed, 3 Jul 2024 13:44:12 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: <239d64d0-6447-465c-a506-e90f68ed94cf@univ-nantes.fr> References: <239d64d0-6447-465c-a506-e90f68ed94cf@univ-nantes.fr> Message-ID: On Wed, Jul 03, 2024 at 12:11:02PM +0200, Stéphane Téletchéa wrote: > A tout hasard, tu ne fais pas une lecture de trop dans la boucle ? > > 0..scalar(@tab) -> 0..scalar(@tab*)-1* Le `scalar` est inutile ici. $ perl -E 'say for 0 .. @ARGV -1' a b c 0 1 2 -- Philippe Bruhat (BooK) Some fair deals are fairer than others. (Moral from Groo The Wanderer #101 (Epic)) From philippe.bruhat at free.fr Wed Jul 3 13:51:26 2024 From: philippe.bruhat at free.fr (Philippe Bruhat (BooK)) Date: Wed, 3 Jul 2024 13:51:26 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: On Wed, Jul 03, 2024 at 09:47:26AM +0200, Patrice Karatchentzeff wrote: > > 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")}; > }; Tu utilises quoi pour le `switch` ? Switch de CPAN ? > 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]\") }"; > } > }; Cet `eval` me choque beaucoup. Je pense qu'il ne fait pas du tout ce que tu veux. Voici ce que Perl en comprend: $ perl -MO=Deparse -e 'eval case, $line+1, "{(\$search, \$target) = (\"$tab[$line][0]\", \"$tab[$line][1]\") }";' eval 'case', $line + 1, qq[{(\$search, \$target) = ("$tab[$line][0]", "$tab[$line][1]") }]; Avec des parenthèse, pour bien voir les priorités : $ perl -MO=Deparse,-p -e 'eval case, $line+1, "{(\$search, \$target) = (\"$tab[$line][0]\", \"$tab[$line][1]\") }";' (eval('case'), ($line + 1), (qq[{(\$search, \$target) = ("$tab[$line][0]", "$tab[$line][1]") }])); > J'ai alors un Bad case statement (invalid case value?). Si le code evalué est effectivement just `case`, c'est normal d'avoir une erreur: $ perl -MSwitch -E 'case' Bad case statement (invalid case value?) near -e line 1 > $line+1 ne passe pas (si je fais un print à la place du eval, le code > perl est correct. Ton print affiche la liste complète de ce qui suit le `eval`. Il ne débuggue pas le bon problème. -- Philippe Bruhat (BooK) Life is a play. The secret is to know your lines, respect the other players and make a good exit. (Moral from Groo The Wanderer #12 (Epic)) From patrice.karatchentzeff at gmail.com Wed Jul 3 15:49:02 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Wed, 3 Jul 2024 15:49:02 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: <239d64d0-6447-465c-a506-e90f68ed94cf@univ-nantes.fr> References: <239d64d0-6447-465c-a506-e90f68ed94cf@univ-nantes.fr> Message-ID: Non, la boucle est bonne, parce que j'incrémente la variable de 1 dans la boucle... Si j'échange mon eval par un print, le formatage est bon : c'est bien le code que je veux. C'est l'exécution du eval qui foire... Le mer. 3 juil. 2024 à 12:11, Stéphane Téletchéa a écrit : > > Hello, > > A tout hasard, tu ne fais pas une lecture de trop dans la boucle ? > > 0..scalar(@tab) -> 0..scalar(@tab)-1 > > Sinon, pas bien regardé en détail :-) > > HTH, > > Stéphane > > Le 03/07/2024 à 09:47, Patrice Karatchentzeff a écrit : > > 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 > > -- > Assistant Professor, USBB, UMR 6286 CNRS, Bioinformatique Structurale > UFR Sciences et Techniques, 2, rue de la Houssinière, Bât. 25, 44322 Nantes cedex 03, France > Tél : +33 251 125 636 / Fax : +33 251 125 632 > http://www.us2b.univ-nantes.fr/ - http://www.steletch.org > > _______________________________________________ > 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- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) From patrice.karatchentzeff at gmail.com Wed Jul 3 17:13:42 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Wed, 3 Jul 2024 17:13:42 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: Bon, j'améliore un peu mon truc... Comme dit Stéphane, il y avait bien un effet de bord dans l'exemple que j'ai mis ici (il n'est pas iso à mon code) : $choice = randomize(scalar(@SEO)); switch($choice) { for my $line (0..scalar(@SEO)-1) { my $case= $line+1; eval qq!case $case {(\$search, \$target) = (\"$SEO[$line][0]\", \"$SEO[$line][1]\")};!; warn $@ if $@; print qq!case $case {(\$search, \$target) = (\"$SEO[$line][0]\", \"$SEO[$line][1]\")};!, "\n"; }; L'utilisation de qq!! améliore un peu les choses, mais cette fois j'ai l'erreur : Number found where operator expected at (eval 216) line 1, near "case 1" (Do you need to predeclare case?) syntax error at (eval 216) line 1, near "case 1" case 1 {($search, $target) = ("truc1", "truc2")}; (remarquez que le résultat du print est conforme à ce que je veux passer à eval) Si je comprends bien cette erreur (merci Gabor : https://perlmaven.com/scalar-found-where-operator-expected), la liaison entre les différents éléments de la liste ne sont pas bien collés : il faudrait techniquement un . (ce qui me semble était fait par le qq!!). Le mer. 3 juil. 2024 à 09:47, Patrice Karatchentzeff a écrit : > > 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- ) )-,_. ,\ ( `'-' > '---''(_/--' `-'\_) -- |\ _,,,---,,_ Patrice KARATCHENTZEFF ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff at gmail.com |,4- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) From patrice.karatchentzeff at gmail.com Wed Jul 3 17:21:31 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Wed, 3 Jul 2024 17:21:31 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: 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 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 De la part de Patrice Karatchentzeff > Envoyé : mercredi 3 juillet 2024 09:47 > À : Perl > 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 > 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] > -- > > 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- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) From paguerlais at airfrance.fr Thu Jul 4 11:14:48 2024 From: paguerlais at airfrance.fr (Guerlais, Patrice (ITOP TD) - AF) Date: Thu, 4 Jul 2024 09:14:48 +0000 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: J'aime bien la logique KISS, je suis très feignant (pas paresseux !) ? -----Message d'origine----- De : 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 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 > 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 > De la > part de Patrice Karatchentzeff Envoyé : mercredi 3 juillet 2024 09:47 > À : Perl > 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 > 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] > -- > > 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- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) _______________________________________________ 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-A8754B3A9D2BD37E/source/logo-af-215x60] -- 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: From patrice.karatchentzeff at gmail.com Fri Jul 5 08:53:38 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Fri, 5 Jul 2024 08:53:38 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: 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 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 De la > > > part de Patrice Karatchentzeff Envoyé : mercredi 3 juillet 2024 09:47 > > > À : Perl 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 > > > 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] > > > -- > > > > > > 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- ) )-,_. ,\ ( `'-' > > '---''(_/--' `-'\_) > > _______________________________________________ > > Perl mailing list > > Perl at mongueurs.net > > http://listes.mongueurs.net/mailman/listinfo/perl > > Attention, les archives sont publiques > > > -- > > 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: From patrice.karatchentzeff at gmail.com Thu Jul 11 08:39:52 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Thu, 11 Jul 2024 08:39:52 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! Message-ID: Salut, J'ai été puni il y a quelques mois et j'ai dû coder un bout de programme en Python. J'ai confirmé pourquoi je détestais ce langage et Emacs m'a sauvé la vie grâce à https://realpython.com/emacs-the-best-python-editor/ Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai apprécié surtout le fait de détecter avant la compilation la détection de mauvaises déclarations de variables par exemple. Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. Quelqu'un aurait-il une astuce ? Merci PK -- |\ _,,,---,,_ Patrice KARATCHENTZEFF ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff at gmail.com |,4- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) From kai.carver at gmail.com Thu Jul 11 12:49:21 2024 From: kai.carver at gmail.com (Kai Carver) Date: Thu, 11 Jul 2024 12:49:21 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Hello Excellente question à laquelle je n'ai pas (pour l'instant) de réponse ... mais je ne résiste pas au titre bien trollesque pour changer un peu le sujet (sorry) et dire que ... même si tout semble me pousser à utiliser VS Code je me rabats souvent sur Emacs que je préfère (ou vi si je n'ai pas le temps d'installer Emacs) ... et aussi je me demande comment les nombreux partisans de VS Code se débrouillent en mode terminal. Ils utilisent nano ? k On Thu, 11 Jul 2024 at 08:49, Patrice Karatchentzeff < patrice.karatchentzeff at gmail.com> wrote: > Salut, > > J'ai été puni il y a quelques mois et j'ai dû coder un bout de > programme en Python. J'ai confirmé pourquoi je détestais ce langage et > Emacs m'a sauvé la vie grâce à > > https://realpython.com/emacs-the-best-python-editor/ > > Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode > cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai > apprécié surtout le fait de détecter avant la compilation la détection > de mauvaises déclarations de variables par exemple. > > Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. > > Quelqu'un aurait-il une astuce ? > > Merci > > PK > > -- > |\ _,,,---,,_ Patrice KARATCHENTZEFF > ZZZzz /,`.-'`' -. ;-;;,_ mailto: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 > -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From paguerlais at airfrance.fr Thu Jul 11 14:45:12 2024 From: paguerlais at airfrance.fr (Guerlais, Patrice (ITOP TD) - AF) Date: Thu, 11 Jul 2024 12:45:12 +0000 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Bonjour, on n?est pas vendredi mais je vais troller un peu moi-aussi ? * Python : bienvenue au club des punis, on m?a souvent reproché d?utiliser Perl au motif que « on ne connaît pas, il faudrait faire du Python ». Du coup je fais du Python sur ordre depuis quelques années, et personne ne reprend le code au motif que « on ne connaît pas ». Je ne sais pas s?il faut en rire ou en pleurer? * vi/emacs/VS code : j?aime bien mon emacs, de préférence en version Xemacs même si je n?utilise que très rarement la souris. VS code : beurk. vi : oui, mais uniquement en mode vi, pas vim. * partisans de VS code : ce n?est pas très compliqué, quand ils sont en mode terminal ils ne font rien, ils appellent à l?aide. Mes 2cts Patrice De : perl-bounces at mongueurs.net De la part de Kai Carver Envoyé : jeudi 11 juillet 2024 12:49 À : Liste francophone pour les questions générales sur Perl Objet : Re: [Perl] Emacs, the best perl editor in the world ! Hello Excellente question à laquelle je n'ai pas (pour l'instant) de réponse ... mais je ne résiste pas au titre bien trollesque pour changer un peu le sujet (sorry) et dire que ... même si tout semble me pousser à utiliser VS Code je me rabats souvent sur Emacs que je préfère (ou vi si je n'ai pas le temps d'installer Emacs) ... et aussi je me demande comment les nombreux partisans de VS Code se débrouillent en mode terminal. Ils utilisent nano ? k On Thu, 11 Jul 2024 at 08:49, Patrice Karatchentzeff > wrote: Salut, J'ai été puni il y a quelques mois et j'ai dû coder un bout de programme en Python. J'ai confirmé pourquoi je détestais ce langage et Emacs m'a sauvé la vie grâce à https://realpython.com/emacs-the-best-python-editor/ Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai apprécié surtout le fait de détecter avant la compilation la détection de mauvaises déclarations de variables par exemple. Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. Quelqu'un aurait-il une astuce ? Merci PK -- |\ _,,,---,,_ Patrice KARATCHENTZEFF ZZZzz /,`.-'`' -. ;-;;,_ mailto: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-A8754B3A9D2BD37E/source/logo-af-215x60] -- 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: From sebastien at feugere.net Thu Jul 11 15:54:45 2024 From: sebastien at feugere.net (=?UTF-8?Q?S=C3=A9bastien_Feug=C3=A8re?=) Date: Thu, 11 Jul 2024 15:54:45 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Un très important travail est en cours sur le cperl-mode d?Emacs. Pour le suivre, il faut aller sur le dépôt GitHub de son (unique?) mainteneur, Harald Joerg: https://github.com/HaraldJoerg/cperl-mode Le souci est que cette version est un fork de celui qui est intégré à Emacs. Un Emacs de base est équipé de deux modes pour Perl, sans que aucun soit satisfaisant en 2024: perl-mode et la version non-maintenue du cperl-mode. Des discussions sont cependant en cours pour ne garder que le fork de cperl-mode, les autres paraissant totalement abandonnés. Pour profiter des dernières avancées, il suffit de demander à son gestionnaire de plugins dans Emacs d?utiliser la version sur GithHub. Il n?est pas dispo sur le MELPA. Cela ne suffit pas à obtenir des fonctionnalités fournies par des Language Server Protocols (comme Intellisense etc.), dans quel cas, on peut utiliser en plus un lsp-mode avec un module appelé PerlNavigator. D?autres solutions de  type LSP  existent : à voir sur le site https://emacs-lsp.github.io/lsp-mode/ (et chercher la section « languages > perl ». Bon courage, car cela peut demander un certain investissement à configurer, notamment si on utilise des environnements Docker pour travailler, etc. Par contre, les personnes qui maintiennent ces outils sont très sympathiques et friandes de divers retours, donc on peut recevoir de l?aide facilement. Sébastien Feugère On 11/07/2024 08:39, Patrice Karatchentzeff wrote: > Salut, > > J'ai été puni il y a quelques mois et j'ai dû coder un bout de > programme en Python. J'ai confirmé pourquoi je détestais ce langage et > Emacs m'a sauvé la vie grâce à > > https://realpython.com/emacs-the-best-python-editor/ > > Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode > cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai > apprécié surtout le fait de détecter avant la compilation la détection > de mauvaises déclarations de variables par exemple. > > Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. > > Quelqu'un aurait-il une astuce ? > > Merci > > PK > -- Sébastien Feugère -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From sebastien at feugere.net Thu Jul 11 16:06:53 2024 From: sebastien at feugere.net (=?UTF-8?Q?S=C3=A9bastien_Feug=C3=A8re?=) Date: Thu, 11 Jul 2024 16:06:53 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: <3420d2df-7b7b-446d-a957-20a0c76808eb@feugere.net> Je souhaite réagir à ces deux différents messages : > partisans de VS code : ce n?est pas très compliqué, quand ils sont en > mode terminal ils ne font rien, ils appellent à l?aide. > > ... et aussi je me demande comment les nombreux partisans de VS Code > se débrouillent en mode terminal. Ils utilisent nano ? > Vous allez me dire que "c'est de l'humour". Il s'agit de caricatures grossières ne reflétant pas du tout ce que j'ai vu des utilisateur-e-s de VS Code, qui est un éditeur comme les autres, de très bonne qualité et utilisé par la majorité des développeurs aujourd'hui (quelque chose comme les 2/3, ou plus). Les utilisateur-e-s de VS Code sont capables comme les autres d'ouvrir des tunnels SSH et / ou de trouver toutes sortes de bidouilles ingénieuses pour accomplir leur travail à distance. Sympa de voir comme les utilisateurs de Perl, pourtant cibles de moqueries incessantes et honteuses, sont tout aussi bien capables de se livrer aux mêmes persécutions avec Python, les éditeurs qui ne sont pas pour "les vrais programmeurs", etc. Un peu de modération sur ce type de message ne ferait pas de mal. -- Sébastien Feugère -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From patrice.karatchentzeff at gmail.com Fri Jul 12 09:12:29 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Fri, 12 Jul 2024 09:12:29 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Merci pour ta réponse bien documentée. J'ai essayé avec lsp-mode qui est facile à installer, puisqu'on le trouve dans MELPA. Par contre, derrière, c'est la galère. J'ai installé en local Perl::LanguageServe, d'abord avec cpan qui bogue, car il demande à la fin d'être root (alors qu'il installe en local). En repassant la fin avec cpanm, cela finit correctement. Un nouveau coup de cpan et celui trouve tout bien installé ! Après avoir bien mis mon installation locale dans @INC, le lancement de LanguageServe échoue... car il ne le trouve pas dans le path. Il me donne le path... qui contient mon répertoire local ! J'ai vérifié, il est bien dedans... À ce stade, je laisse tomber et j'attendrai que cela mûrisse un peu... dommage, cela me faisait bien envie... Pour le troll Emacs, c'est tellement dans les gênes que je me demande si cela vaut le coup de commenter ? Cela va 30 ans qu'on s'amuse avec Emacs vs vi que j'ai presque trouvé rafraîchissement d'introduire des concurrents... En attendant, mon pauvre Emacs vieillit et semble plutôt à la traîne :( Et ça, ça me fait vraiment prendre un coup de vieux... Le jeu. 11 juil. 2024 à 15:54, Sébastien Feugère a écrit : > Un très important travail est en cours sur le cperl-mode d?Emacs. Pour le > suivre, il faut aller sur le dépôt GitHub de son (unique?) mainteneur, > Harald Joerg: > > https://github.com/HaraldJoerg/cperl-mode > Le souci est que cette version est un fork de celui qui est intégré à > Emacs. Un Emacs de base est équipé de deux modes pour Perl, sans que aucun > soit satisfaisant en 2024: perl-mode et la version non-maintenue du > cperl-mode. Des discussions sont cependant en cours pour ne garder que le > fork de cperl-mode, les autres paraissant totalement abandonnés. > > Pour profiter des dernières avancées, il suffit de demander à son > gestionnaire de plugins dans Emacs d?utiliser la version sur GithHub. Il > n?est pas dispo sur le MELPA. > > Cela ne suffit pas à obtenir des fonctionnalités fournies par des Language > Server Protocols (comme Intellisense etc.), dans quel cas, on peut utiliser > en plus un lsp-mode avec un module appelé PerlNavigator. D?autres solutions > de type LSP existent : à voir sur le site > https://emacs-lsp.github.io/lsp-mode/ (et chercher la section « languages > > perl ». > > Bon courage, car cela peut demander un certain investissement à > configurer, notamment si on utilise des environnements Docker pour > travailler, etc. Par contre, les personnes qui maintiennent ces outils sont > très sympathiques et friandes de divers retours, donc on peut recevoir de > l?aide facilement. > > Sébastien Feugère > > > On 11/07/2024 08:39, Patrice Karatchentzeff wrote: > > Salut, > > J'ai été puni il y a quelques mois et j'ai dû coder un bout de > programme en Python. J'ai confirmé pourquoi je détestais ce langage et > Emacs m'a sauvé la vie grâce à > https://realpython.com/emacs-the-best-python-editor/ > > Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode > cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai > apprécié surtout le fait de détecter avant la compilation la détection > de mauvaises déclarations de variables par exemple. > > Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. > > Quelqu'un aurait-il une astuce ? > > Merci > > PK > > > -- > Sébastien Feugère > > _______________________________________________ > 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: From patrice.karatchentzeff at gmail.com Tue Jul 16 09:36:10 2024 From: patrice.karatchentzeff at gmail.com (Patrice Karatchentzeff) Date: Tue, 16 Jul 2024 09:36:10 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Bon, finalement, ça m'embêtait de ne pas tester... À force de bricoler, j'ai fini par installer correctement LanguageServer en local. Du coup, le mode lsp fonctionne sous Emacs et c'est déjà beaucoup mieux et très proche de l'exemple que j'avais donné avec Python. Espérons que la modernisation du mode cperl avance vite et qu'il entrera prochainement dans les distributions... Merci pour l'idée. Le ven. 12 juil. 2024 à 09:12, Patrice Karatchentzeff < patrice.karatchentzeff at gmail.com> a écrit : > Merci pour ta réponse bien documentée. > > J'ai essayé avec lsp-mode qui est facile à installer, puisqu'on le trouve > dans MELPA. Par contre, derrière, c'est la galère. > > J'ai installé en local Perl::LanguageServe, d'abord avec cpan qui bogue, > car il demande à la fin d'être root (alors qu'il installe en local). En > repassant la fin avec cpanm, cela finit correctement. Un nouveau coup de > cpan et celui trouve tout bien installé ! > > Après avoir bien mis mon installation locale dans @INC, le lancement de > LanguageServe échoue... car il ne le trouve pas dans le path. Il me donne > le path... qui contient mon répertoire local ! J'ai vérifié, il est bien > dedans... > > À ce stade, je laisse tomber et j'attendrai que cela mûrisse un peu... > dommage, cela me faisait bien envie... > > Pour le troll Emacs, c'est tellement dans les gênes que je me demande si > cela vaut le coup de commenter ? Cela va 30 ans qu'on s'amuse avec Emacs vs > vi que j'ai presque trouvé rafraîchissement d'introduire des concurrents... > En attendant, mon pauvre Emacs vieillit et semble plutôt à la traîne :( > > Et ça, ça me fait vraiment prendre un coup de vieux... > > Le jeu. 11 juil. 2024 à 15:54, Sébastien Feugère > a écrit : > >> Un très important travail est en cours sur le cperl-mode d?Emacs. Pour le >> suivre, il faut aller sur le dépôt GitHub de son (unique?) mainteneur, >> Harald Joerg: >> >> https://github.com/HaraldJoerg/cperl-mode >> Le souci est que cette version est un fork de celui qui est intégré à >> Emacs. Un Emacs de base est équipé de deux modes pour Perl, sans que aucun >> soit satisfaisant en 2024: perl-mode et la version non-maintenue du >> cperl-mode. Des discussions sont cependant en cours pour ne garder que le >> fork de cperl-mode, les autres paraissant totalement abandonnés. >> >> Pour profiter des dernières avancées, il suffit de demander à son >> gestionnaire de plugins dans Emacs d?utiliser la version sur GithHub. Il >> n?est pas dispo sur le MELPA. >> >> Cela ne suffit pas à obtenir des fonctionnalités fournies par des >> Language Server Protocols (comme Intellisense etc.), dans quel cas, on peut >> utiliser en plus un lsp-mode avec un module appelé PerlNavigator. D?autres >> solutions de type LSP existent : à voir sur le site >> https://emacs-lsp.github.io/lsp-mode/ (et chercher la section « >> languages > perl ». >> >> Bon courage, car cela peut demander un certain investissement à >> configurer, notamment si on utilise des environnements Docker pour >> travailler, etc. Par contre, les personnes qui maintiennent ces outils sont >> très sympathiques et friandes de divers retours, donc on peut recevoir de >> l?aide facilement. >> >> Sébastien Feugère >> >> >> On 11/07/2024 08:39, Patrice Karatchentzeff wrote: >> >> Salut, >> >> J'ai été puni il y a quelques mois et j'ai dû coder un bout de >> programme en Python. J'ai confirmé pourquoi je détestais ce langage et >> Emacs m'a sauvé la vie grâce à >> https://realpython.com/emacs-the-best-python-editor/ >> >> Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode >> cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai >> apprécié surtout le fait de détecter avant la compilation la détection >> de mauvaises déclarations de variables par exemple. >> >> Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. >> >> Quelqu'un aurait-il une astuce ? >> >> Merci >> >> PK >> >> >> -- >> Sébastien Feugère >> >> _______________________________________________ >> 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- ) )-,_. ,\ ( `'-' > '---''(_/--' `-'\_) > -- |\ _,,,---,,_ Patrice KARATCHENTZEFF ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff at gmail.com |,4- ) )-,_. ,\ ( `'-' '---''(_/--' `-'\_) -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From c.olivier at agencelafusee.com Wed Jul 3 15:58:04 2024 From: c.olivier at agencelafusee.com (Christophe Olivier) Date: Wed, 3 Jul 2024 15:58:04 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: Salut, J'ai regardé rapidement, mais il me semble qu'il faut que tu eval tous le code du switch. Bien cordialement Christophe Le 03/07/2024 à 09:47, Patrice Karatchentzeff a écrit : > 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 > From c.olivier at agencelafusee.com Wed Jul 3 16:00:14 2024 From: c.olivier at agencelafusee.com (c.olivier at agencelafusee.com) Date: Wed, 3 Jul 2024 16:00:14 +0200 Subject: [Perl] Autoconstruire du code perl dans un switch In-Reply-To: References: Message-ID: <71c0e284-2a23-4f02-9e02-0557b2dbad53@quadrupede.com> Salut, J'ai regardé rapidement, mais il me semble qu'il faut que tu eval tous le code du switch. Bien cordialement Christophe Le 03/07/2024 à 09:47, Patrice Karatchentzeff a écrit : > 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 > From dams at eml.cc Fri Jul 19 16:02:51 2024 From: dams at eml.cc (Damien Krotkine) Date: Fri, 19 Jul 2024 16:02:51 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Personnellement j'ai refait ma config Emacs il y a un an, et j'ai maintenant un environnement qui fait tout ce que VSCode ou JetBrains fait, en plus bien sûr de toutes les fonctionnalités propres à Emacs :) Je ne fais plus de Perl depuis 3 ans, ici c'est Python + TypeScript et lsp-mode fonctionne très bien. Je pense qu'en une heure ou deux on doit être capable d'avoir une config nickel pour Perl aussi, puisqu'il y a plus d'un server LSP pour Perl, PLS, Navigator and Language::Server. On Fri, Jul 12, 2024, at 09:12, Patrice Karatchentzeff wrote: > Merci pour ta réponse bien documentée. > > J'ai essayé avec lsp-mode qui est facile à installer, puisqu'on le trouve dans MELPA. Par contre, derrière, c'est la galère. > > J'ai installé en local Perl::LanguageServe, d'abord avec cpan qui bogue, car il demande à la fin d'être root (alors qu'il installe en local). En repassant la fin avec cpanm, cela finit correctement. Un nouveau coup de cpan et celui trouve tout bien installé ! > > Après avoir bien mis mon installation locale dans @INC, le lancement de LanguageServe échoue... car il ne le trouve pas dans le path. Il me donne le path... qui contient mon répertoire local ! J'ai vérifié, il est bien dedans... > > À ce stade, je laisse tomber et j'attendrai que cela mûrisse un peu... dommage, cela me faisait bien envie... > > Pour le troll Emacs, c'est tellement dans les gênes que je me demande si cela vaut le coup de commenter ? Cela va 30 ans qu'on s'amuse avec Emacs vs vi que j'ai presque trouvé rafraîchissement d'introduire des concurrents... En attendant, mon pauvre Emacs vieillit et semble plutôt à la traîne :( > > Et ça, ça me fait vraiment prendre un coup de vieux... > > Le jeu. 11 juil. 2024 à 15:54, Sébastien Feugère a écrit : >> __ >> Un très important travail est en cours sur le cperl-mode d?Emacs. Pour le suivre, il faut aller sur le dépôt GitHub de son (unique?) mainteneur, Harald Joerg: >> >> https://github.com/HaraldJoerg/cperl-mode >> >> Le souci est que cette version est un fork de celui qui est intégré à Emacs. Un Emacs de base est équipé de deux modes pour Perl, sans que aucun soit satisfaisant en 2024: perl-mode et la version non-maintenue du cperl-mode. Des discussions sont cependant en cours pour ne garder que le fork de cperl-mode, les autres paraissant totalement abandonnés. >> >> Pour profiter des dernières avancées, il suffit de demander à son gestionnaire de plugins dans Emacs d?utiliser la version sur GithHub. Il n?est pas dispo sur le MELPA. >> >> Cela ne suffit pas à obtenir des fonctionnalités fournies par des Language Server Protocols (comme Intellisense etc.), dans quel cas, on peut utiliser en plus un lsp-mode avec un module appelé PerlNavigator. D?autres solutions de type LSP existent : à voir sur le site https://emacs-lsp.github.io/lsp-mode/ (et chercher la section « languages > perl ». >> >> Bon courage, car cela peut demander un certain investissement à configurer, notamment si on utilise des environnements Docker pour travailler, etc. Par contre, les personnes qui maintiennent ces outils sont très sympathiques et friandes de divers retours, donc on peut recevoir de l?aide facilement. >> >> Sébastien Feugère >> >> >> On 11/07/2024 08:39, Patrice Karatchentzeff wrote: >>> Salut, >>> >>> J'ai été puni il y a quelques mois et j'ai dû coder un bout de >>> programme en Python. J'ai confirmé pourquoi je détestais ce langage et >>> Emacs m'a sauvé la vie grâce à >>> >>> https://realpython.com/emacs-the-best-python-editor/ >>> >>> Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode >>> cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai >>> apprécié surtout le fait de détecter avant la compilation la détection >>> de mauvaises déclarations de variables par exemple. >>> >>> Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. >>> >>> Quelqu'un aurait-il une astuce ? >>> >>> Merci >>> >>> PK >>> >>> >> -- >> Sébastien Feugère >> ___________________________________________________ >> 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- ) )-,_. ,\ ( `'-' > '---''(_/--' `-'\_) > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > Attention, les archives sont publiques -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From cognominal at gmail.com Fri Jul 26 03:42:00 2024 From: cognominal at gmail.com (=?UTF-8?Q?St=C3=A9phane_Payrard?=) Date: Fri, 26 Jul 2024 03:42:00 +0200 Subject: [Perl] Emacs, the best perl editor in the world ! In-Reply-To: References: Message-ID: Tu trolles. Tu détestes nano., Dans un terminal vscode, j'utilise vim, et sudo vim dans un terminal non vscode pour éditer /etc/hosts pour filtrer les sites adclicks et autres.. Et emacs pour le mode dired. L'extension vscode-dired ne me satisfaisait pas malgré des (modestes) patches que j'y avais apporté... il y a déjà 3 ans. Je vais la tester à nouveau. https://github.com/shirou/vscode-dired Maintenant que Comma semble bien mort, l'extension raku de vscode est un pis-aller. Elle ne supporte pas le Debugger Adapter Protocol, car MoarVM non plus. De toute façon, raku (et ses slangs) ne peut être supportés avec les infrastructures de treesitter actuelles qui supposent une grammaire *simple* prédéfinie. La grammaire de raku n'est pas simple donc la mise en valeur syntaxique est souvent fausse. Quant aux slangs, qui étaient pour moi la spécificité (potentielle) de raku, il est triste aussi de constater que le dernier patch de TimToady, pour un meilleur support, est vieux de 7 ans (*). Et sur CPAN, les rares slangs sont au niveau lexical sauf un. Au crédit de Liz, Slangify rend l'exercice de création de slang moins difficile. https://raku.land/zef:lizmat/Slangify (*) Depuis la communauté l'a enterré vivant et elle supporte et incarne (avec insultes et cancelling des déviants) des idéologies totalitaires antinomiques avec le personnalisme que TimToady incarnait, version américaine. Mais déjà il y 20 ans, malgré ses mérites par ailleurs, p5p était à des années lumière de la philosophie de TimToady. En copiant l'url https://fr.wikipedia.org/wiki/Personnalisme je découvre que le wp fr comporte une page sur cette version américaine (ou une autre). Être plus spécifique dans mes remarques relèverait en France du pénal. Pour comprendre ce que la communauté incarne maintenant, la lecture de Philippe Muray pourrait aider à comprendre pour les très/trop rares membres de la communauté qui ont une culture générale. Le reste traitera mon poste comme un troll... Comme dab. On Thu, Jul 11, 2024 at 12:50?PM Kai Carver wrote: > > Hello > > Excellente question à laquelle je n'ai pas (pour l'instant) de réponse > > ... mais je ne résiste pas au titre bien trollesque pour changer un peu le > sujet (sorry) et dire que > > ... même si tout semble me pousser à utiliser VS Code je me rabats souvent > sur Emacs que je préfère (ou vi si je n'ai pas le temps d'installer Emacs) > > ... et aussi je me demande comment les nombreux partisans de VS Code se > débrouillent en mode terminal. Ils utilisent nano ? > > k > > > On Thu, 11 Jul 2024 at 08:49, Patrice Karatchentzeff < > patrice.karatchentzeff at gmail.com> wrote: > >> Salut, >> >> J'ai été puni il y a quelques mois et j'ai dû coder un bout de >> programme en Python. J'ai confirmé pourquoi je détestais ce langage et >> Emacs m'a sauvé la vie grâce à >> >> https://realpython.com/emacs-the-best-python-editor/ >> >> Du coup, je me suis dit que ce serait bien d'enrichir le pauvre mode >> cperl d'Emacs pour faire pareil que le mode python ci-dessus. J'ai >> apprécié surtout le fait de détecter avant la compilation la détection >> de mauvaises déclarations de variables par exemple. >> >> Je n'ai pas trop trouvé l'équivalent (sous Emacs bien sûr) pour Perl. >> >> Quelqu'un aurait-il une astuce ? >> >> Merci >> >> PK >> >> -- >> |\ _,,,---,,_ Patrice KARATCHENTZEFF >> ZZZzz /,`.-'`' -. ;-;;,_ mailto: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 >> > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > Attention, les archives sont publiques -- cognominal stef -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: