From sebastien.moretti at unil.ch Fri May 5 13:25:39 2017 From: sebastien.moretti at unil.ch (Sebastien Moretti) Date: Fri, 5 May 2017 13:25:39 +0200 Subject: [Perl] perl: warning: Setting locale failed Message-ID: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> Bonjour j'ai ce problème couramment rencontré perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). Malheureusement c'est sur un serveur où je ne peux pas faire sudo. Existe-t-il un moyen de supprimer ce warning DANS le script perl lui-même? J'ai déjà tenté - no warnings 'locale' - #!/usr/bin/env LC_ALL=C perl - BEGIN { $ENV{'LC_ALL'} = 'C'; } sans succès. Merci -- Sébastien Moretti From olivier.mengue at gmail.com Fri May 5 18:00:03 2017 From: olivier.mengue at gmail.com (=?UTF-8?Q?Olivier_Mengu=C3=A9?=) Date: Fri, 5 May 2017 18:00:03 +0200 Subject: [Perl] perl: warning: Setting locale failed In-Reply-To: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> References: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> Message-ID: Non. Tricher avec perl n'est pas une bonne idée. Les vraies solutions sont : - soit de corriger ton environnement : changer les variables d'environnement indiquées pour qu'elles correspondent à ce qui est disponible sur la machine. - soit ajouter des locales sur la machine Vu que tu n'a pas d'accès root, tu n'as que la première option. Regarde la sortie de /usr/bin/locale sur cette machine et compare avec la liste donnée par "/usr/bin/locale -a". Est que tu lances cette commande directement sur un terminal local ou depuis un terminal distant via SSH ? Si c'est via SSH, le problème vient probablement du fait que ton client SSH propage sa locale au serveur distant. C'est l'option "SendEnv" (voir man ssh_config) qui permet cela. Sur Ubuntu c'est dans la config par défaut (grep SendEnv /etc/ssh/ssh_config). Tu peux alors : - soit lancer ta commande SSH avec les variables d'environnement corrigées. Ex : LC_ALL=C.UTF-8 ssh ton-hôte ta-commande - soit paramétrer tes connexions SSH à ce serveur pour qu'elles surchargent la config SSH par défaut avec une configuration où les variables d'environnement ne sont pas envoyées. Le préfixe "!" permet d'indiquer de NE PAS envoyer la variable indiquée. Exemple dans ton ~/.ssh/config : Host mon-hôte SendEnv !LANG Olivier. Le 5 mai 2017 à 13:25, Sebastien Moretti a écrit : > Bonjour > > j'ai ce problème couramment rencontré > perl: warning: Setting locale failed. > perl: warning: Please check that your locale settings: > LANGUAGE = (unset), > LC_ALL = (unset), > LANG = "en_US.UTF-8" > are supported and installed on your system. > perl: warning: Falling back to the standard locale ("C"). > > > Malheureusement c'est sur un serveur où je ne peux pas faire sudo. > > > Existe-t-il un moyen de supprimer ce warning DANS le script perl lui-même? > > J'ai déjà tenté > - no warnings 'locale' > - #!/usr/bin/env LC_ALL=C perl > - BEGIN { $ENV{'LC_ALL'} = 'C'; } > sans succès. > > > Merci > > -- > Sébastien Moretti > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From d.minix at gmail.com Fri May 5 21:18:43 2017 From: d.minix at gmail.com (Dominix) Date: Fri, 5 May 2017 09:18:43 -1000 Subject: [Perl] perl: warning: Setting locale failed In-Reply-To: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> References: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> Message-ID: avant de lancer ton script unset LANG Le 05/05/2017 à 01:25, Sebastien Moretti a écrit : > Bonjour > > j'ai ce problème couramment rencontré > perl: warning: Setting locale failed. > perl: warning: Please check that your locale settings: > LANGUAGE = (unset), > LC_ALL = (unset), > LANG = "en_US.UTF-8" > are supported and installed on your system. > perl: warning: Falling back to the standard locale ("C"). > > > Malheureusement c'est sur un serveur où je ne peux pas faire sudo. > > > Existe-t-il un moyen de supprimer ce warning DANS le script perl > lui-même? > > J'ai déjà tenté > - no warnings 'locale' > - #!/usr/bin/env LC_ALL=C perl > - BEGIN { $ENV{'LC_ALL'} = 'C'; } > sans succès. > > > Merci > > -- > Sébastien Moretti > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From sylvain at lhullier.org Sun May 7 12:01:44 2017 From: sylvain at lhullier.org (Sylvain Lhullier) Date: Sun, 7 May 2017 12:01:44 +0200 Subject: [Perl] =?utf-8?q?Le_r=C3=A9pertoire_courant_n=27est_plus_dans_=40?= =?utf-8?q?INC_=3F?= Message-ID: <20170507100144.3k4uplbti2plcmow@lhullier.org> Bonjour, Suite à la mise à jour de mes systèmes vers Ubuntu 17.04, je suis passé en Perl v5.24.1. Et j'ai remarqué que @INC ne contient plus '.' (le répertoire courant) par défaut. J'ai noté que le fichier /etc/perl/sitecustomize.pl contient pop @INC if $INC[-1] eq '.' and !$ENV{PERL_USE_UNSAFE_INC}; (si je commente cette ligne, perl fonctionne comme avant avec '.' dans @INC) Est-ce une volonté côté Perl ? côté Debian/Ubuntu ? En attendant d'en savoir plus, j'ai ajouté BEGIN { push @INC, '.' } dans mes programmes pour utiliser mes modules plutôt qu'un PERL_USE_UNSAFE_INC=1 ./prog.pl ou que de modifier le système. Avez-vous constaté cela dans vos systèmes (récents) ? Merci de vos éclairages Librement, -- Sylvain Lhullier Formation Perl http://formation-perl.fr/ Président des Mongueurs de Perl http://mongueurs.net/ From david at rigaudiere.net Sun May 7 14:28:07 2017 From: david at rigaudiere.net (David Rigaudiere) Date: Sun, 7 May 2017 14:28:07 +0200 Subject: [Perl] =?utf-8?q?Le_r=C3=A9pertoire_courant_n=27est_plus_dans_=40?= =?utf-8?q?INC_=3F?= In-Reply-To: <20170507100144.3k4uplbti2plcmow@lhullier.org> References: <20170507100144.3k4uplbti2plcmow@lhullier.org> Message-ID: <92D9B5F3-273C-4264-979B-3DE5417C6CB3@rigaudiere.net> Hello Oui depuis perl 5.24.1 : http://search.cpan.org/dist/perl-5.24.1/pod/perldelta.pod#Core_modules_and_tools_no_longer_search_"."_for_optional_modules <> Core modules and tools no longer search "." for optional modules <> The tools and many modules supplied in core no longer search the default current directory entry in @INC for optional modules. For example, Storable will remove the final "." from @INC before trying to load Log::Agent . This prevents an attacker injecting an optional module into a process run by another user where the current directory is writable by the attacker, e.g. the /tmp directory. > Le 7 mai 2017 à 12:01, Sylvain Lhullier a écrit : > > Bonjour, > > Suite à la mise à jour de mes systèmes vers Ubuntu 17.04, je suis passé en Perl v5.24.1. > Et j'ai remarqué que @INC ne contient plus '.' (le répertoire courant) par défaut. > > J'ai noté que le fichier /etc/perl/sitecustomize.pl contient > pop @INC if $INC[-1] eq '.' and !$ENV{PERL_USE_UNSAFE_INC}; > (si je commente cette ligne, perl fonctionne comme avant avec '.' dans @INC) > > Est-ce une volonté côté Perl ? côté Debian/Ubuntu ? > > En attendant d'en savoir plus, j'ai ajouté > BEGIN { push @INC, '.' } > dans mes programmes pour utiliser mes modules > plutôt qu'un PERL_USE_UNSAFE_INC=1 ./prog.pl > ou que de modifier le système. > > Avez-vous constaté cela dans vos systèmes (récents) ? > > Merci de vos éclairages > > Librement, > > -- > Sylvain Lhullier > Formation Perl http://formation-perl.fr/ > Président des Mongueurs de Perl http://mongueurs.net/ > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From sylvain at lhullier.org Sun May 7 18:03:50 2017 From: sylvain at lhullier.org (Sylvain Lhullier) Date: Sun, 7 May 2017 18:03:50 +0200 Subject: [Perl] =?utf-8?q?Le_r=C3=A9pertoire_courant_n=27est_plus_dans_=40?= =?utf-8?q?INC_=3F?= In-Reply-To: <92D9B5F3-273C-4264-979B-3DE5417C6CB3@rigaudiere.net> References: <20170507100144.3k4uplbti2plcmow@lhullier.org> <92D9B5F3-273C-4264-979B-3DE5417C6CB3@rigaudiere.net> Message-ID: <20170507160350.zalprtujiktt5xrg@lhullier.org> Bonjour, Oui, j'avais vu cela. Mais vu la manière dont c'est fait (modification de @INC dans un fichier de config), cela donnait l'impression que c'était la distribution qui avait mis cela en place. Merci David pour ta réponse. A+ David Rigaudiere a écrit : > Hello > Oui depuis perl 5.24.1 : > > http://search.cpan.org/dist/perl-5.24.1/pod/perldelta.pod#Core_modules_and_tools_no_longer_search_"."_for_optional_modules > > > <> > Core modules and tools no longer search "." for optional modules <> > The tools and many modules supplied in core no longer search the default current directory entry in @INC for optional modules. For example, Storable will remove the final "." from @INC before trying to load Log::Agent . > > This prevents an attacker injecting an optional module into a process run by another user where the current directory is writable by the attacker, e.g. the /tmp directory. > > > > > > Le 7 mai 2017 à 12:01, Sylvain Lhullier a écrit : > > > > Bonjour, > > > > Suite à la mise à jour de mes systèmes vers Ubuntu 17.04, je suis passé en Perl v5.24.1. > > Et j'ai remarqué que @INC ne contient plus '.' (le répertoire courant) par défaut. > > > > J'ai noté que le fichier /etc/perl/sitecustomize.pl contient > > pop @INC if $INC[-1] eq '.' and !$ENV{PERL_USE_UNSAFE_INC}; > > (si je commente cette ligne, perl fonctionne comme avant avec '.' dans @INC) > > > > Est-ce une volonté côté Perl ? côté Debian/Ubuntu ? > > > > En attendant d'en savoir plus, j'ai ajouté > > BEGIN { push @INC, '.' } > > dans mes programmes pour utiliser mes modules > > plutôt qu'un PERL_USE_UNSAFE_INC=1 ./prog.pl > > ou que de modifier le système. > > > > Avez-vous constaté cela dans vos systèmes (récents) ? > > > > Merci de vos éclairages > > > > Librement, > > > > -- > > Sylvain Lhullier > > Formation Perl http://formation-perl.fr/ > > Président des Mongueurs de Perl http://mongueurs.net/ > > _______________________________________________ > > Perl mailing list > > Perl at mongueurs.net > > http://listes.mongueurs.net/mailman/listinfo/perl > > > -- Sylvain Lhullier Formation Perl http://formation-perl.fr/ Président des Mongueurs de Perl http://mongueurs.net/ From sebastien at aperghis.net Mon May 8 00:20:06 2017 From: sebastien at aperghis.net (=?utf-8?Q?S=C3=A9bastien?= Aperghis-Tramoni) Date: Mon, 8 May 2017 00:20:06 +0200 (CEST) Subject: [Perl] =?utf-8?q?Le_r=C3=A9pertoire_courant_n=27est_plus_dans_=40?= =?utf-8?q?INC_=3F?= In-Reply-To: <20170507100144.3k4uplbti2plcmow@lhullier.org> Message-ID: <1346586052.119028932.1494195606772.JavaMail.root@spooler3-g27.priv.proxad.net> Sylvain Lhullier wrote : > Bonjour, > > Suite à la mise à jour de mes systèmes vers Ubuntu 17.04, je suis > passé en Perl v5.24.1. > Et j'ai remarqué que @INC ne contient plus '.' (le répertoire > courant) par défaut. > > J'ai noté que le fichier /etc/perl/sitecustomize.pl contient > pop @INC if $INC[-1] eq '.' and !$ENV{PERL_USE_UNSAFE_INC}; > (si je commente cette ligne, perl fonctionne comme avant avec '.' > dans @INC) > > Est-ce une volonté côté Perl ? côté Debian/Ubuntu ? > > En attendant d'en savoir plus, j'ai ajouté > BEGIN { push @INC, '.' } > dans mes programmes pour utiliser mes modules > plutôt qu'un PERL_USE_UNSAFE_INC=1 ./prog.pl > ou que de modifier le système. > > Avez-vous constaté cela dans vos systèmes (récents) ? C'est une décision côté Perl, pour « sécuriser » @INC. On est quelques uns à trouver que c'est un peu stupide, vu que cela reste hyper simple d'attaquer par injection de faux modules dans @INC. Ceci dit, dépendre de la présence de "." dans @INC est aussi une mauvaise pratique. -- Sébastien Aperghis-Tramoni Close the world, txEn eht nepO. From sebastien.moretti at unil.ch Mon May 8 09:33:30 2017 From: sebastien.moretti at unil.ch (Sebastien Moretti) Date: Mon, 8 May 2017 09:33:30 +0200 Subject: [Perl] perl: warning: Setting locale failed In-Reply-To: References: <136c3077-169d-69e8-4b09-cc8ad0d46617@unil.ch> Message-ID: <20f2ef8e-bb02-98c8-f7ee-8f0da374fc2a@unil.ch> Merci pour vos réponses. > Non. Tricher avec perl n'est pas une bonne idée. > > Les vraies solutions sont : > - soit de corriger ton environnement : changer les variables > d'environnement indiquées pour qu'elles correspondent à ce qui est > disponible sur la machine. > - soit ajouter des locales sur la machine > > Vu que tu n'a pas d'accès root, tu n'as que la première option. > > Regarde la sortie de /usr/bin/locale sur cette machine et compare avec > la liste donnée par "/usr/bin/locale -a". > > Est que tu lances cette commande directement sur un terminal local ou > depuis un terminal distant via SSH ? J'ai les deux cas. Et je ne suis pas le seul utilisateur du script. Donc je peux difficilement demander à tous les utilisateurs de faire cette correction. J'espérais faire ça dans le script Perl directement. Je vais sans doute créer un wrapper autour du script Perl afin que celui-ci ait les bonnes locales lors de son exécution. > Si c'est via SSH, le problème vient probablement du fait que ton client > SSH propage sa locale au serveur distant. C'est l'option "SendEnv" (voir > man ssh_config) qui permet cela. Sur Ubuntu c'est dans la config par > défaut (grep SendEnv /etc/ssh/ssh_config). > Tu peux alors : > - soit lancer ta commande SSH avec les variables d'environnement > corrigées. Ex : LC_ALL=C.UTF-8 ssh ton-hôte ta-commande > - soit paramétrer tes connexions SSH à ce serveur pour qu'elles > surchargent la config SSH par défaut avec une configuration où les > variables d'environnement ne sont pas envoyées. Le préfixe "!" permet > d'indiquer de NE PAS envoyer la variable indiquée. Exemple dans ton > ~/.ssh/config : > Host mon-hôte > SendEnv !LANG > Olivier. > > > > Le 5 mai 2017 à 13:25, Sebastien Moretti > a écrit : > > Bonjour > > j'ai ce problème couramment rencontré > perl: warning: Setting locale failed. > perl: warning: Please check that your locale settings: > LANGUAGE = (unset), > LC_ALL = (unset), > LANG = "en_US.UTF-8" > are supported and installed on your system. > perl: warning: Falling back to the standard locale ("C"). > > > Malheureusement c'est sur un serveur où je ne peux pas faire sudo. > > > Existe-t-il un moyen de supprimer ce warning DANS le script perl > lui-même? > > J'ai déjà tenté > - no warnings 'locale' > - #!/usr/bin/env LC_ALL=C perl > - BEGIN { $ENV{'LC_ALL'} = 'C'; } > sans succès. > > > Merci > > -- > Sébastien Moretti > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > -- Sébastien Moretti From asseline at telecom-paristech.fr Wed May 10 17:43:32 2017 From: asseline at telecom-paristech.fr (Dominique Asselineau) Date: Wed, 10 May 2017 17:43:32 +0200 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= Message-ID: <20170510154332.GA23738@telecom-paristech.fr> Bonjour, J'utilise Perl sur Linux/Debian 8.8 (Jessie à jour). - perl: Version 5.20.2 - Archive::Zip: Version 1.39 Si j'ajoute dans l'archive zip un membre à partir d'une chaîne UTF-8 avec la méthode addString( $chaine, $nomDeMembre ), lorsqu'ensuite je tente d'écrire cette archive à l'aide de la méthode writeToFileHandle, dans un fichier temporaire produit par Archive::Zip::tempFile(), j'obtiens l'erreur Wide character in Compress::Raw::Zlib::crc32 at /usr/share/perl5/Archive/Zip.pm line 307. Comme indiqué dans le man de Archive::Zip, à la section "Archive::Zip Global Variables", je positionne la variable "local $Archive::Zip::UNICODE = 1;" juste avant l'appel à la méthode addString mais ça ne convient pas. Je suppose que la variable $Archive::Zip::UNICODE = 1; devrait permettre à addString d'encoder la chaîne Perl UTF-8 en octets qui ne devraient pas poser problème lors de traitement suivant ? J'ai mis un ECM en pj pour illustrer le problème que je rencontre, et pour mettre en évidence l'erreur que je pourrais commettre. Merci de votre aide. Dominique -- -------------- section suivante -------------- Une pièce jointe autre que texte a été nettoyée... Nom: zipTemporary.pl Type: application/octet-stream Taille: 931 octets Desc: non disponible URL: From xlat at cpan.org Wed May 10 18:00:27 2017 From: xlat at cpan.org (Nicolas GEORGES) Date: Wed, 10 May 2017 17:00:27 +0100 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= In-Reply-To: <20170510154332.GA23738@telecom-paristech.fr> References: <20170510154332.GA23738@telecom-paristech.fr> Message-ID: Salut, Est-ce que cela pourrait être le même problème que j'ai rencontré ici : https://github.com/redhotpenguin/perl-Archive-Zip/pull/25 ? Peut-être que ta version du module est trop ancien, tu pourrais passer en v1.56 ? Nicolas. print pack'b*',join'',map{$_.($_+0?'010':'100')}unpack('b*',pack'w*',7376,16,193516616,0,1508,0,11289860)=~/...../g Le 10 mai 2017 à 16:43, Dominique Asselineau a écrit : > Bonjour, > > J'utilise Perl sur Linux/Debian 8.8 (Jessie à jour). > - perl: Version 5.20.2 > - Archive::Zip: Version 1.39 > > Si j'ajoute dans l'archive zip un membre à partir d'une chaîne UTF-8 > avec la méthode addString( $chaine, $nomDeMembre ), lorsqu'ensuite je > tente d'écrire cette archive à l'aide de la méthode writeToFileHandle, > dans un fichier temporaire produit par Archive::Zip::tempFile(), > j'obtiens l'erreur > > Wide character in Compress::Raw::Zlib::crc32 at > /usr/share/perl5/Archive/Zip.pm line 307. > > Comme indiqué dans le man de Archive::Zip, à la section "Archive::Zip > Global Variables", je positionne la variable "local > $Archive::Zip::UNICODE = 1;" juste avant l'appel à la méthode > addString mais ça ne convient pas. > > Je suppose que la variable $Archive::Zip::UNICODE = 1; devrait > permettre à addString d'encoder la chaîne Perl UTF-8 en octets qui ne > devraient pas poser problème lors de traitement suivant ? > > J'ai mis un ECM en pj pour illustrer le problème que je rencontre, > et pour mettre en évidence l'erreur que je pourrais commettre. > > Merci de votre aide. > > Dominique > > > -- > > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > > -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From asseline at telecom-paristech.fr Wed May 10 18:40:37 2017 From: asseline at telecom-paristech.fr (Dominique Asselineau) Date: Wed, 10 May 2017 18:40:37 +0200 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= In-Reply-To: References: <20170510154332.GA23738@telecom-paristech.fr> Message-ID: <20170510164037.GA25417@telecom-paristech.fr> Nicolas GEORGES wrote on Wed, May 10, 2017 at 05:00:27PM +0100 > Salut, > > Est-ce que cela pourrait être le même problème que j'ai rencontré ici : > https://github.com/redhotpenguin/perl-Archive-Zip/pull/25 ? > Peut-être que ta version du module est trop ancien, tu pourrais passer en > v1.56 ? Je ne suis pas administrateur (root) sur ma machine et encore moins sur celle en production. En attendant une solution plus complète, en faisant $zip->addString( encode_utf8( $laChaine ), $nomDuMembre ) ça semble marcher mais est-ce suffisant... pas sûr. Et je pourrais bien tomber de Charybde en Scylla comme parfois avec des solutions seulement apparentes. Dominique -- From olivier.mengue at gmail.com Thu May 11 02:54:59 2017 From: olivier.mengue at gmail.com (=?UTF-8?Q?Olivier_Mengu=C3=A9?=) Date: Thu, 11 May 2017 02:54:59 +0200 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= In-Reply-To: <20170510154332.GA23738@telecom-paristech.fr> References: <20170510154332.GA23738@telecom-paristech.fr> Message-ID: Le 10 mai 2017 à 17:43, Dominique Asselineau a écrit : > > Si j'ajoute dans l'archive zip un membre à partir d'une chaîne UTF-8 > avec la méthode addString( $chaine, $nomDeMembre ), lorsqu'ensuite je > tente d'écrire cette archive à l'aide de la méthode writeToFileHandle, > dans un fichier temporaire produit par Archive::Zip::tempFile(), > j'obtiens l'erreur > > Wide character in Compress::Raw::Zlib::crc32 at > /usr/share/perl5/Archive/Zip.pm line 307. > > Comme indiqué dans le man de Archive::Zip, à la section "Archive::Zip > Global Variables", je positionne la variable "local > $Archive::Zip::UNICODE = 1;" juste avant l'appel à la méthode > addString mais ça ne convient pas. > > Je suppose que la variable $Archive::Zip::UNICODE = 1; devrait > permettre à addString d'encoder la chaîne Perl UTF-8 en octets qui ne > devraient pas poser problème lors de traitement suivant ? > > Pas du tout. La doc indique : « This variable governs how Unicode file and directory names are added to or extracted from an archive. » Or le problème que tu rencontre n'est pas sur les noms de fichiers mais sur le *contenu* de ces fichiers. Tu ne dois pas envoyer une chaîne Unicode comme contenu mais plutôt une chaîne d'octets (bytes) que tu aura proprement encodés à partir d'un chaîne Unicode. Utilise pour cela le module Encode. use Encode 'encode'; $zip->addString( encode('UTF-8', $string1), 'la-1re-chaine.txt' ); Ton code corrigé est en pièce jointe. Olivier. -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: -------------- section suivante -------------- Une pièce jointe autre que texte a été nettoyée... Nom: zipTemporary-corrigé.pl Type: application/x-perl Taille: 986 octets Desc: non disponible URL: From asseline at telecom-paristech.fr Thu May 11 17:29:58 2017 From: asseline at telecom-paristech.fr (Dominique Asselineau) Date: Thu, 11 May 2017 17:29:58 +0200 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= In-Reply-To: References: <20170510154332.GA23738@telecom-paristech.fr> Message-ID: <20170511152957.GA10759@telecom-paristech.fr> Olivier Mengué wrote on Thu, May 11, 2017 at 02:54:59AM +0200 > Le 10 mai 2017 à 17:43, Dominique Asselineau > a écrit : > > > > > Si j'ajoute dans l'archive zip un membre à partir d'une chaîne UTF-8 > > avec la méthode addString( $chaine, $nomDeMembre ), lorsqu'ensuite je > > tente d'écrire cette archive à l'aide de la méthode writeToFileHandle, > > dans un fichier temporaire produit par Archive::Zip::tempFile(), > > j'obtiens l'erreur > > > > Wide character in Compress::Raw::Zlib::crc32 at > > /usr/share/perl5/Archive/Zip.pm line 307. > > > > Comme indiqué dans le man de Archive::Zip, à la section "Archive::Zip > > Global Variables", je positionne la variable "local > > $Archive::Zip::UNICODE = 1;" juste avant l'appel à la méthode > > addString mais ça ne convient pas. > > > > Je suppose que la variable $Archive::Zip::UNICODE = 1; devrait > > permettre à addString d'encoder la chaîne Perl UTF-8 en octets qui ne > > devraient pas poser problème lors de traitement suivant ? > > > > > Pas du tout. > > La doc indique : « This variable governs how Unicode file and directory > names are added to or extracted from an archive. » > > Or le problème que tu rencontre n'est pas sur les noms de fichiers mais sur > le *contenu* de ces fichiers. > Tu ne dois pas envoyer une chaîne Unicode comme contenu mais plutôt une > chaîne d'octets (bytes) que tu aura proprement encodés à partir d'un chaîne > Unicode. Utilise pour cela le module Encode. merci. C'est ce que j'avais fait entre temps. À propos de la doc, si addString attend des octets plutôt qu'une chaîne de caractères, il aurait paru plus clair de le préciser dans la syntaxe : addString( $Bytes, ... ). dom > > use Encode 'encode'; > $zip->addString( encode('UTF-8', $string1), 'la-1re-chaine.txt' ); > > Ton code corrigé est en pièce jointe. > > Olivier. > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl -- From olivier.mengue at gmail.com Thu May 11 22:37:23 2017 From: olivier.mengue at gmail.com (=?UTF-8?Q?Olivier_Mengu=C3=A9?=) Date: Thu, 11 May 2017 22:37:23 +0200 Subject: [Perl] =?utf-8?q?Probl=C3=A8me_avec_module_Archive=3A=3AZip_et_UT?= =?utf-8?q?F-8?= In-Reply-To: <20170511152957.GA10759@telecom-paristech.fr> References: <20170510154332.GA23738@telecom-paristech.fr> <20170511152957.GA10759@telecom-paristech.fr> Message-ID: Le 11 mai 2017 à 17:29, Dominique Asselineau a écrit : > À propos de la doc, si addString attend des octets plutôt > qu'une chaîne de caractères, il aurait paru plus clair de le préciser dans > la syntaxe : addString( $Bytes, ... ). > > dom > Le dépôt pour proposer un patch (une "pull request") est ici : https://github.com/redhotpenguin/perl-Archive-Zip -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From laurent.rosenfeld at googlemail.com Fri May 26 14:24:52 2017 From: laurent.rosenfeld at googlemail.com (Laurent Rosenfeld) Date: Fri, 26 May 2017 14:24:52 +0200 Subject: [Perl] Financement participatif d'un livre sur Perl 6 Message-ID: Bonjour, Gabor Szabo vient d'ouvrir une campagne de financement participatif pour la rédaction d'un livre sur le développement d'applications Web en Perl 6. https://www.indiegogo.com/projects/book-web-application-development-in-perl-6-website--2#/ Ce livre devait notamment présenter l'utilisation de *Bailador* ( http://perl6maven.com/bailador), un framework Web Perl 6 inspiré de Dancer. De même que Rails a fortement contribué à rendre Ruby populaire, il est possible que Balaidor, accompagné de ce livre de Gabor, contribue puissamment au succès de Perl 6. C'est en tout cas ce que je souhaite à titre personnel. Gabor Szabo est suffisamment connu dans la communauté Perl pour qu'il ne paraisse pas vraiment utile de le présenter, mais signalons cependant qu'il est le propriétaire du site Perl Maven (https://perlmaven.com/), de Perl 6 Maven (http://perl6maven.com/) et l'auteur principal de la lettre d'information* Perl Weekly*. Bref, je vous incite vivement à contribuer à cet effort de financement participatif. Ça se passe ici: https://www.indiegogo.com/projects/book-web-application-development-in-perl-6-website--2#/ Librement, Laurent. -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From laurent.rosenfeld at googlemail.com Tue May 30 16:05:35 2017 From: laurent.rosenfeld at googlemail.com (Laurent Rosenfeld) Date: Tue, 30 May 2017 16:05:35 +0200 Subject: [Perl] Parution du livre Think Perl 6 Message-ID: Bonjour, J?ai le plaisir d?annoncer que la version papier de mon livre, *Think Perl 6, how to think like a computer scientist*, vient de sortir et est disponible chez O'Reilly (http://shop.oreilly.com/product/0636920065883.do). O'Reilly a commencé la semaine dernière à expédier des exemplaires chez les grands distributeurs comme Amazon ou Barnes & Noble chez qui le livre est généralement disponible ou devrait l?être dans les tout prochains jours. Le livre est également téléchargeable gratuitement (licence Creative Commons) au format PDF à l'adresse suivante: http://greenteapress.com/wp/ think-perl-6/. Le livre est également téléchargeable *gratuitement* au format PDF (licence Creatice Commons Attribution / Pas d?Utilisation Commerciale / Partage dans les mêmes conditions ) à l'adresse suivante: http://greenteapress.com/wp/think-perl-6/. Les lecteurs ont le droit de copier et de distribuer ce texte, ainsi que de le modifier, ce qui leur permet de le traduire ou de l'adapter à leurs besoins, sous réserve de respecter les conditions de la licence sus-mentionnée. Les sources LaTeX du livre sont disponibles sur ce dépôt GitHub . Je souhaite une bonne lecture à ceux que ça intéresse. *Note à l'intention des personnes qui seront présentes aux Journées Perl 2017* la semaine prochaine: si vous avez l'intention d'acheter un exemplaire de la version imprimée, ne vous précipitez pas chez Amazon ou O'Reilly, je devrais avoir la semaine prochaine quelques exemplaires à tarif réduit. Voilà une raison de plus de venir nombreux aux journées Perl. :) Bonne fin de journée, Laurent. -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: