OVH Cloud OVH Cloud

Perl sur MacOS X et modules

25 réponses
Avatar
pere.noel
en vue d'une traduction en ruby du module perl Encode::Guess j'aimerais
savoir comment installer ce module sur ma bécanne s'il ne l'est déjà.

ca fait très longtemps que je n'ai pas fait de perl...
si je me souviens bien on installe de nouveaux modules par cpan ?

mais comment vérifier dans une installation existante si le module
existe ou pas ?

--
une bévue

10 réponses

1 2 3
Avatar
kurtz le pirate
In article <1hcquw9.1o748tb3gf2yoN%,
(Une bévue) wrote:

en vue d'une traduction en ruby du module perl Encode::Guess j'aimerais
savoir comment installer ce module sur ma bécanne s'il ne l'est déjà.

ca fait très longtemps que je n'ai pas fait de perl...
si je me souviens bien on installe de nouveaux modules par cpan ?

mais comment vérifier dans une installation existante si le module
existe ou pas ?


perldoc Encode::Guess

--
klp

Avatar
pere.noel
kurtz le pirate wrote:


perldoc Encode::Guess


ouiais, merci, après avoir installé le shell cpan j'ai eu :

cpan> install
Encode::Guess
Encode::Guess is up to date.


comment étre absolument sûr que Encode::Guess est installé par défaut
sur MacOS X ??

je peux écrire un bout de script Perl, l'envoyer à quelqu'un qui a
plusieurs machines différentes (je ne m'intéresse qu'à Tiger).


--
une bévue

Avatar
Jaypee
Une bévue wrote:
en vue d'une traduction en ruby du module perl Encode::Guess j'aimerais
savoir comment installer ce module sur ma bécanne s'il ne l'est déjà.

ca fait très longtemps que je n'ai pas fait de perl...
si je me souviens bien on installe de nouveaux modules par cpan ?

mais comment vérifier dans une installation existante si le module
existe ou pas ?

tu tapes cpan dasn un Terminal et tu es à peu près aussi bien guidé

qu'avec gem. (c-à-d pas du tout :( )

Taper plutôt "sudo cpan" pour aller plus loin, si affinité.
J-P

Avatar
pere.noel
Jaypee wrote:

tu tapes cpan dasn un Terminal et tu es à peu près aussi bien guidé
qu'avec gem. (c-à-d pas du tout :( )

Taper plutôt "sudo cpan" pour aller plus loin, si affinité.


il faut un sudo ?
cpan> install Encode::Guess
Encode::Guess is up to date.

bon j'ai eu du pot alors, c'était délà installé, je projette d'utiliser
cette librairie Perl (à défaut de la traduire) depuis ruby...

comme c'était déjà installé chez moi, sans que je touche à Perl, ça veut
dire que tous les personnes ayant Tiger ont cette lib, ou vaut-il mieux
que je fasse vérifier par qq'un d'autre qui n'a pas installé
darwinports, ou fink ???
--
une bévue

Avatar
kurtz le pirate
In article <1hcrhxk.15ga7j0ilw28dN%,
(Une bévue) wrote:

Jaypee wrote:

tu tapes cpan dasn un Terminal et tu es à peu près aussi bien guidé
qu'avec gem. (c-à-d pas du tout :( )

Taper plutôt "sudo cpan" pour aller plus loin, si affinité.


il faut un sudo ?
cpan> install Encode::Guess
Encode::Guess is up to date.


mais non, mais non... être root juste pour avoir une info ! tse tse


bon j'ai eu du pot alors, c'était délà installé, je projette d'utiliser
cette librairie Perl (à défaut de la traduire) depuis ruby...

comme c'était déjà installé chez moi, sans que je touche à Perl, ça veut
dire que tous les personnes ayant Tiger ont cette lib, ou vaut-il mieux
que je fasse vérifier par qq'un d'autre qui n'a pas installé
darwinports, ou fink ???


a priori oui. je suis sous panther et j'ai mois aussi ce module mais
comme j'en ai installé des tas avec cpan, je ne pensais pas que ce
module était de base.

donc bonne nouvelle pour toi :))


--
klp


Avatar
pere.noel
kurtz le pirate wrote:

donc bonne nouvelle pour toi :))


ok merci pour cette confirmation !

tu connais Perl ?

j'essaie d'utiliser Encode::Guess; donc, comme ça :

$fn="ruby-cocoa-us-ascii.html";
$string='';
open (F, $fn) || die "Unable to open file $file : $!";
while ($line = <F>) {
$string.=$line;
}
use Encode::Guess;
use base qw(Encode::Encoding);
Encode::Guess->add_suspects('latin1');
my $decoder = Encode::Guess->guess($string);
print "decoder : $decoder";######### => Encode::XS=SCALAR(0x304c78)
$name=$decoder->name;
print "name : $dname"; ####### => donne que dalle


comment est-ce que je peut traduire "en clair" le code xs scalaire ?

la page est supposée être en US-ASCII.

dans la doc ils renvoient à Encode::Encoding mais ne disent pas s'il y a
une méthode à appliquer à $decoder pour retourner le nom de
l'encodage...

en fait je dois prendre des pages qqc (question encodage utf-8,
iso-8859-1, iso-8859-15, cp-1252, mac-roman et us-asccii) et les
retourner toutes en UTF-8...

donc, je compte utiliser perl, depuis ruby, pour combler les trous de
décodage de ruby...
--
une bévue

Avatar
kurtz le pirate
In article <1hcru07.ttf7tejxr2f6N%,
(Une bévue) wrote:

kurtz le pirate wrote:

donc bonne nouvelle pour toi :))


ok merci pour cette confirmation !

tu connais Perl ?


oui

j'essaie d'utiliser Encode::Guess; donc, comme ça :

$fn="ruby-cocoa-us-ascii.html";
$string='';
open (F, $fn) || die "Unable to open file $file : $!";
while ($line = <F>) {
$string.=$line;
}


et si tu lisait tout le fichier d'un coup avec une truc du genre :
my $string;
$fn = "nom du fichier";
{
local $/;
open F, $fn or die "can't open $file: $!";
$string = <F>;
close F or die "cannot close $file: $!";
}


use Encode::Guess;
use base qw(Encode::Encoding);
Encode::Guess->add_suspects('latin1');
my $decoder = Encode::Guess->guess($string);
print "decoder : $decoder";######### => Encode::XS=SCALAR(0x304c78)
$name=$decoder->name;
print "name : $dname"; ####### => donne que dalle


comment est-ce que je peut traduire "en clair" le code xs scalaire ?

la page est supposée être en US-ASCII.

dans la doc ils renvoient à Encode::Encoding mais ne disent pas s'il y a
une méthode à appliquer à $decoder pour retourner le nom de
l'encodage...

en fait je dois prendre des pages qqc (question encodage utf-8,
iso-8859-1, iso-8859-15, cp-1252, mac-roman et us-asccii) et les
retourner toutes en UTF-8...
connais pas ce module. je vais faire un tour sur le web pour voir s'il y

a de la doc dessus.


--
klp


Avatar
pere.noel
kurtz le pirate wrote:

et si tu lisait tout le fichier d'un coup avec une truc du genre :
my $string;
$fn = "nom du fichier";
{
local $/;
ça veut dire quoi ? "local $/;" ? tu importes toutes les car

d'environnement lées à local ?

open F, $fn or die "can't open $file: $!";
$string = <F>;
close F or die "cannot close $file: $!";
}


ok, merci, pas besoin de boucle alors...



use Encode::Guess;
use base qw(Encode::Encoding);
Encode::Guess->add_suspects('latin1');
my $decoder = Encode::Guess->guess($string);
print "decoder : $decoder";######### => Encode::XS=SCALAR(0x304c78)
$name=$decoder->name;
print "name : $dname"; ####### => donne que dalle


comment est-ce que je peut traduire "en clair" le code xs scalaire ?

la page est supposée être en US-ASCII.

dans la doc ils renvoient à Encode::Encoding mais ne disent pas s'il y a
une méthode à appliquer à $decoder pour retourner le nom de
l'encodage...

en fait je dois prendre des pages qqc (question encodage utf-8,
iso-8859-1, iso-8859-15, cp-1252, mac-roman et us-asccii) et les
retourner toutes en UTF-8...
connais pas ce module. je vais faire un tour sur le web pour voir s'il y

a de la doc dessus.


ben j'ai regardé dans perldoc, mais bon ils ne disent pas grand chose...
--
une bévue


Avatar
kurtz_le_pirate
""Une bévue"" a écrit dans le message
de news: 1hcsx6b.mh8q1llehnjuN%
kurtz le pirate wrote:

et si tu lisait tout le fichier d'un coup avec une truc du genre :
my $string;
$fn = "nom du fichier";
{
local $/;
ça veut dire quoi ? "local $/;" ? tu importes toutes les car

d'environnement lées à local ?


la variable $/ définit le caractère de fin de ligne.
pour le block {...}, on annule cette variable localement.
ça permet de lire tout le fichier d'un seul coup


open F, $fn or die "can't open $file: $!";
$string = <F>;
close F or die "cannot close $file: $!";
}


ok, merci, pas besoin de boucle alors...


ben non, c'est le mode "slurp" :)


Avatar
pere.noel
kurtz_le_pirate wrote:


la variable $/ définit le caractère de fin de ligne.
pour le block {...}, on annule cette variable localement.
ça permet de lire tout le fichier d'un seul coup


open F, $fn or die "can't open $file: $!";
$string = <F>;
close F or die "cannot close $file: $!";
}


ok, merci, pas besoin de boucle alors...


ben non, c'est le mode "slurp" :)


ok, merci beaucoup, cependant, je ne suis toujours pas parvenu à régler
le problème lié au message d'erreur :
Can't locate object method "name" via package "iso-8859-1 or utf8"
(perhaps you forgot to load "iso-8859-1 or utf8"?) at
/Users/yvon/work/Perl/encoding-check/check_files.pl line 26.

et pourtant il me sort :
iso-8859-1
iso-8859-1

sur les deux fichiers qui sont -- effectivement -- en ISO-8859-1

en fait le prog s'arrête sur le premier fichier en UTF-8, la ligne 26
étant :

return $decoder->name;

dans mes "use" j'ai juste :

use Encode::Guess;
use base qw(Encode::Encoding);

je ne pige pas le message d'erreur :

(perhaps you forgot to load "iso-8859-1 or utf8"?)

qu'est-ce que je dois faire pour charger iso-8859-1 et utf-8 ???

ah, autrement, petite question à propos du :

{
local $/;
open F, $fn or die "can't open $file: $!";
$string = <F>;
close F or die "cannot close $file: $!";
}

tu as mis cela entre {} pour une question de scope concernant la ligne :
local $/;
càd de manière à être sûr que local $/; n'affecte que cette partie du
script ???

--
une bévue



1 2 3