Récupération de donnés multiligne - Perl - Programmation
Marsh Posté le 13-04-2012 à 21:09:08
Postes du code et non pas des images que je ne peux pas quoter pour la réponse (et la j'ai la flemme de retaper le code).
A+,
Marsh Posté le 13-04-2012 à 21:18:21
Désolé j'avais pas pensé à ça :(
Code : |
Code :
|
Marsh Posté le 13-04-2012 à 22:05:52
while (my $ligne = <INPUT2> ) {
Cela déclenche une lecture ligne à ligne, donc tu ne pourras jamais matcher en multiligne ainsi.
On peut le faire en deux temps avec un flag:
Code :
|
(le formatage du source perl se plante après le premier " dans la regexp, d'ou les couleurs bizarres )
Le ^au début de l'expression régulière était lui aussi erroné.
A+,
Marsh Posté le 13-04-2012 à 23:36:33
Merci beaucoup à toi gilou ça marche nickel. Jamais j'aurais trouvé ça tout seul, pourtant c'est pas faute d'avoir cherché sur le web. Je pensais pas que c'était aussi compliqué de récupérer des données différentes sur plusieurs lignes et pour ce que je veux faire par la suite ça va se compliquer méchamment !
Par exemple dans la partie du fichier HTML suivant, comment peut-on faire en PERL pour récupérer les données suivantes et les mettre chacune dans une variable différente avec lesquelles je pourrais faire des calculs par la suite ?
1 Skenderbeu Korca 20 13 5 2 36 13 44
2 Tirana SK 20 13 4 3 27 15 43
3 Teuta Durres 20 13 4 3 23 12 43
.....
Attention je ne demande pas qu'on me fasse le code, comme je suis débutant je veux essayer déjà de pondre quelque chose pour progresser. Par rapport au code que tu m'as donné gilou est-ce qu'il faut le reprendre et faire une imbrication des else if autant de fois que j'ai de données à extraire ? ça me parait un peu compliqué et pas très orthodoxe non?
Ou sinon est-ce qu'il serait pas mieux dans mon cas, puisque je veux récupérer jusqu'à 24 lignes de 9 données chacune comme j'ai présenté ci-dessus et que je veux mettre ces données dans des variables que je peux réutiliser pour faire des calculs et dans une BDD(toujours pour faire des calculs), d'essayé de le faire avec des tableaux ou listes ?
En fait j'aimerais juste que tu m'orientes vers la solution qui semble la meilleure. Et merci encore pour ta réactivité et ton aide précieuse
Code :
|
Marsh Posté le 14-04-2012 à 11:28:47
Citation : Par rapport au code que tu m'as donné gilou est-ce qu'il faut le reprendre et faire une imbrication des else if autant de fois que j'ai de données à extraire ? ça me parait un peu compliqué et pas très orthodoxe non? |
On pourrait, mais en perl, on a la chance de bénéficier d'une gigantesque librairie de modules (entreposés en ligne dans la CPAN, Comprehensive Perl Archive Network) qui évite de réinventer la roue.
Ici, tu as des données html, dont tu veux exploiter la structure hiérarchique. En cherchant sur CPAN a HTML et Tree, on tombe sur le module HTML::Tree qui répond aux besoins.
Ne reste plus qu'a l'utiliser efficacement.
Bon, pour l'exemple que tu as donné, voici une solution possible (en perl, il y a en général plus d'une manière de faire la même chose, plus on progresse, et plus on découvre des manières plus efficaces de faire les choses, l'essentiel étant de pouvoir écrire une manière, même avec des connaissances de base. Par exemple, il y a plein de modules qui traitent le HTML, et d'autres auraient sans doute pu être utilisé. J'ai choisi celui qui m'a semblé le plus pratique). J'aurais volontiers mis le code en spoiler, mais le fonctionnement du forum ne permet pas cela.
Code :
|
L'explication rapide du code:
Spoiler : On crée une structure interne propre à HTML::TreeBuilder à partir des données HTML pour pouvoir bosser: |
N'hésites pas à poser des questions s'il y a des choses que tu ne comprends pas.
A+,
Marsh Posté le 14-04-2012 à 16:04:37
Merci beaucoup pour cette solution, je suis en train d'essayer de la tester, mais là je me heurte à l'installation du module HTML::Tree sur mon MAC.
J'essaie d'installer wget mais à la configuration il y a des erreurs "configure: error: in `/Users/Christophe':
configure: error: no acceptable C compiler found in $PATH" ... j'essaie de voir d'où ça vient et je te tiens au courant.
Marsh Posté le 14-04-2012 à 17:11:36
Quelle distribution de Perl sur le Mac? Celle d'active state ou une autre?
A+,
Marsh Posté le 14-04-2012 à 17:15:56
j'ai fait un perl -v et ça m'a donné ça : This is perl, v5.8.8 built for darwin-thread-multi-2level
Marsh Posté le 14-04-2012 à 22:31:23
Vas voir ce qui est dit ici: http://www.cpan.org/modules/INSTALL.html
J'ai plus de Mac sous la main pour pouvoir te donner plus de précisions
A+,
Marsh Posté le 15-04-2012 à 00:22:52
Merci à toi, je regarderais ça demain soir car demain je suis pas là. Je pense effectivement qu'il me manque quelque chose pour installer les modules du CPAN car quand j'en installe un j'ai une erreur qui me dit qu'il m'en manque plusieurs !! Je vais regarder ça avec intérêt.
Marsh Posté le 15-04-2012 à 18:57:52
J'ai donc suivis les recommandations sur la page que tu m'as indiqué gilou (http://www.cpan.org/modules/INSTALL.html) , j'ai installé le 'developper' package qui est sur mon DVD d'installation. Ensuite j'ai fait un cpan App::cpanminus dans le terminal mais l'installation ne se passe pas super bien, voilà ce que j'obtiens(un peu long). Apparement d'après le peu que je comprends il y a un problème avec make(et je ne sais pas s'il est installé sur mon mac et comment on l'installe) et il y a aussi un problème avec le chemin d'accès à unzip, normalament il devrait pas être dans /usr/bin/unzip ?
Du coup je suis bloqué pour installer le module HTML::Tree ! Je vais chercher d'où le problème peut venir.
Marsh Posté le 15-04-2012 à 20:07:00
Oui, apparemment, tu as des tonnes de trucs pas à jour, et le moindre package nouveau déclenche une remise à jour de plein d'autres choses en cascade.
De plus il demande un truc installé seulement avec Mathlab, WTF?
Tu comprends pourquoi je préfère utiliser le Perl d'active state:
Tu as un Perl qui marche, et une gestion de l'installation de modules (avec leur outil PPM) qui a déjà fait l'essentiel en amont.
A+,
Marsh Posté le 15-04-2012 à 20:37:04
Oui ben je vais installer ActivePerl parce que là c'est trop la galère !
Marsh Posté le 15-04-2012 à 21:43:37
Je ne sais pas comment c'est sur Mac, mais sur PC, active perl, en plus de leur outil graphique PPM, a un outil en mode console, CPAN, qui a la première utilisation, installe les compilos dont il a besoin s'il ne les trouve pas.
A+,
Marsh Posté le 16-04-2012 à 00:38:25
Bon j'ai installé ActivePerl mais c'est vraiment tordu sur MAC, apparement c'est beaucoup plus simple sur PC. Là y a rien qui fonctionne je vais me coucher. Juste une question toute con, je n'ai pas le recul nécessaire, mais est-ce que c'est pas plus facile de faire ce que j'ai à faire avec PHP(en plus PHP est installé correctement sur mon MAC), c'est-à-dire récupérer des données sur dans une page hmtl et ensuite utiliser ces données avec une BDD ?
Marsh Posté le 16-04-2012 à 02:35:19
Non, c'est du pareil au même (PHP est assez fortement basé sur Perl) et moins efficace probablement.
A+,
Marsh Posté le 16-04-2012 à 09:53:05
Citation : Là y a rien qui fonctionne |
Il faut peut être faire gaffe à ce qu'il ne se mélange pas les pieds entre l'ancienne version de Perl et celle d'Active State.
Même perl.org, qui est un site neutre, indique que installer la version d'Active State est la manière la plus simple d'avoir une version fonctionnelle et à jour de Perl.
A+,
Marsh Posté le 20-04-2012 à 15:12:26
Bonjour, j'ai essayé de réinstaller ActivePerl 5.14 sur mon mac. J'ai lancé l'installation et elle a réussi. Par contre ensuite il faut faire d'autres choses, j'ai essayé de suivre les instructions de l'installation mais il y a des choses que je ne capte pas:
1. "OS X includes a non-interactive command line interface to Apple's Installer. To install the ActivePerl Apple installer from the command line:
$ sudo installer \
-pkg /Users/<username>/ActivePerl-5.14.pkg \
-target /"
Ici je ne sais pas ce qu'est "interface to Apple's Installer", j'ai chercher sur le web mais j'ai rien trouvé et du coup pour Installer the ActivePerl Apple installer depuis la ligne de commande c'est impossible ! Je pense que c'est là que j'ai un souci dans l'installation.
2. "More information on the command line interface to Installer can be found in its man page" --> je n'ai pas trouvé cette page man !
Voilà, si quelqu'un a déjà rencontré ce problème pour installer cet ActivePerl 5.14 sur Mac, merci de m'orienter.
A+
-------------------------------------------------------------------------------------------------------------------
Voici le fichier d'installation:
Installing ActivePerl
Prerequisites
• Hardware: 200 MB hard disk space for typical install
• Operating System: OS X 10.5 "Leopard" or later
Installing
ActivePerl is distributed on Mac OS X as a disk image (.dmg file). The disk image contains this installer package (.pkg bundle).
• Follow the remaining Installer prompts. The installer will ask for administrative authentication if the current user does not have administrative priviledges.
• After installation is complete, you may eject the ActivePerl disk image and move ActivePerl-version.dmg to the Trash.
OS X includes a non-interactive command line interface to Apple's Installer. To install the ActivePerl Apple installer from the command line:
$ sudo installer \
-pkg /Users/<username>/ActivePerl-5.14.pkg \
-target /
More information on the command line interface to Installer can be found in its man page.
Configuration
The Apple Installer package installs ActivePerl in /usr/local/ActivePerl-5.14. To run the perl interpreter and PPM package manager (without having to enter the full path), add /usr/local/ActivePerl-5.14/bin to your PATH environment variable. For example:
$ export PATH=/usr/local/ActivePerl-5.14/bin:$PATH
To permanently add the directory to your PATH, add it to the .profile or .bashrc file in the user's home directory. For example:
PATH=/usr/local/ActivePerl-5.14/bin:$PATH
export PATH
Alternatively, symbolic links to the binaries can be created in any bin directory currently in the PATH. For example:
$ PATH=/Users/<username>/bin:$PATH
$ export PATH
$ ln -s /usr/local/ActivePerl-5.14/bin/perl \
/Users/<username>/bin/perl
$ ln -s /usr/local/ActivePerl-5.14/bin/ppm \
/Users/<username>/bin/ppm
Uninstalling ActivePerl
To uninstall ActivePerl, run the uninstall script:
$ sudo /usr/local/ActivePerl-5.14/bin/ap-uninstall
Removing ActivePerl will not remove perl modules manually installed using PPM. If you want to remove them run:
$ rm -rf /Users/<username>/Library/ActivePerl-5.14
If neccessary, remove any symbolic links created during configuration. For example:
$ rm /Users/<username>/bin/perl
Marsh Posté le 20-04-2012 à 19:46:47
Ben quand tu tapes dans une fenêtre console
$ sudo installer -pkg /Users/<username>/ActivePerl-5.14.pkg -target /
(ou tu a remplacé <username> par celui en usage sur ton mac)
il se passe quoi?
A+,
Marsh Posté le 20-04-2012 à 23:26:10
Salut Gilou, merci pour ta réponse
ça me donne ça :
-bash: $: command not found
pour tout t'avouer je comprend rien du tout ! ça me désole j'essaie de regarder un peu partout pour trouver une solution à cette installation mais je trouve rien .... je dois être le seul à rien comprendre apparement
C'est dommage car avec la solution que tu m'as apporté ça marcherait nickel.
Franchement sur Mac pour ce genre d'installation c'est pas très clair les explications, il faut être informaticien de formation !
Marsh Posté le 20-04-2012 à 23:35:27
Oui, je vois que tu n'as jamais fait d'unix de ta vie: le $ représente le prompt (ie ce qui apparaît automatiquement en début de ligne dans une console).
ce que tu devais taper, c'était juste
sudo installer -pkg /Users/<username>/ActivePerl-5.14.pkg -target /
(ou tu a remplacé <username> par celui en usage sur ton mac)
A+,
Marsh Posté le 21-04-2012 à 11:38:47
Alors j'ai refais la manip sans le $ puis j'ai fais un "export PATH=/usr/local/ActivePerl-5.14/bin:$PATH" et ensuite un cpan App::cpanminus.... apparement ça c'est pas trop mal déroulé y a juste à la fin que ça merde avec l'installation de make ! Est-ce que tu sais comment régler ce problème ?
Voici le rendu sur la console:
macbook-de-christophe-magnin-746:~ Christophe$ sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target /
Password:
macbook-de-christophe-magnin-746:~ Christophe$ export PATH=/usr/local/ActivePerl-5.14/bin:$PATH
macbook-de-christophe-magnin-746:~ Christophe$ cpan App::cpanminus
Sorry, we have to rerun the configuration dialog for CPAN.pm due to
some missing parameters. Configuration will be written to
<</Users/Christophe/.cpan/CPAN/MyConfig.pm>>
CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.
Would you like to configure as much as possible automatically? [yes] yes
<install_help>
Warning: You do not have write permission for Perl library directories.
To install modules, you need to configure a local Perl library directory or
escalate your privileges. CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available). You may also
resolve this problem manually if you need to customize your setup.
What approach do you want? (Choose 'local::lib', 'sudo' or 'manual')
[local::lib]
ALERT: 'make' is an essential tool for building perl Modules.
Please make sure you have 'make' (or some equivalent) working.
Press SPACE and ENTER to disable make (NOT RECOMMENDED)
Press SPACE and ENTER to disable unzip
Your 'urllist' is already configured. Type 'o conf init urllist' to change it.
Autoconfiguration complete.
Attempting to bootstrap local::lib...
Writing /Users/Christophe/.cpan/CPAN/MyConfig.pm for bootstrap...
commit: wrote '/Users/Christophe/.cpan/CPAN/MyConfig.pm'
Going to read '/Users/Christophe/.cpan/Metadata'
Database was generated on Sun, 15 Apr 2012 05:51:04 GMT
Fetching with LWP:
ftp://cpan.cict.fr/pub/CPAN/authors/01mailrc.txt.gz
Going to read '/Users/Christophe/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
ftp://cpan.cict.fr/pub/CPAN/modul [...] ils.txt.gz
Going to read '/Users/Christophe/.cpan/sources/modules/02packages.details.txt.gz'
Database was generated on Sat, 21 Apr 2012 02:03:03 GMT
..............
New CPAN.pm version (v1.9800) available.
[Currently running version is v1.960001]
You might want to try
install CPAN
reload cpan
to both upgrade CPAN.pm and run the new version without leaving
the current session.
..............................................................DONE
Fetching with LWP:
ftp://cpan.cict.fr/pub/CPAN/modules/03modlist.data.gz
Going to read '/Users/Christophe/.cpan/sources/modules/03modlist.data.gz'
............................................................................DONE
Going to write /Users/Christophe/.cpan/Metadata
Running make for A/AP/APEIRON/local-lib-1.008004.tar.gz
Fetching with LWP:
ftp://cpan.cict.fr/pub/CPAN/autho [...] 004.tar.gz
Fetching with LWP:
ftp://cpan.cict.fr/pub/CPAN/autho [...] /CHECKSUMS
Checksum for /Users/Christophe/.cpan/sources/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz ok
/usr/bin/tar: Read 6144 bytes from -
CPAN.pm: Going to build A/AP/APEIRON/local-lib-1.008004.tar.gz
Attempting to create directory /Users/Christophe/perl5
*** Module::AutoInstall version 1.03
*** Checking for Perl dependencies...
*** Since we're running under CPAN, I'll just let it take care
of the dependency's installation later.
[Core Features]
- ExtUtils::MakeMaker ...loaded. (6.57_05 >= 6.31)
- ExtUtils::Install ...loaded. (1.56 >= 1.43)
- Module::Build ...loaded. (0.38 >= 0.36)
- CPAN ...loaded. (1.960001 >= 1.82)
*** Module::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Writing Makefile for local::lib
Writing MYMETA.yml
cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod
cp lib/lib/core/only.pm blib/lib/lib/core/only.pm
cp lib/local/lib.pm blib/lib/local/lib.pm
cp lib/POD2/DE/local/lib.pod blib/lib/POD2/DE/local/lib.pod
Manifying blib/man3/POD2::PT_BR::local::lib.3
Manifying blib/man3/lib::core::only.3
Manifying blib/man3/local::lib.3
Manifying blib/man3/POD2::DE::local::lib.3
APEIRON/local-lib-1.008004.tar.gz
/usr/bin/make -- OK
'YAML' not installed, will not store persistent state
Running make test
PERL_DL_NONLAZY=1 /usr/local/ActivePerl-5.14/bin/perl -I/Users/Christophe/perl5/lib/perl5/darwin-thread-multi-2level -I/Users/Christophe/perl5/lib/perl5 "-MExtUtils::Command::MM" "-e" "test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/classmethod.t t/coderefs_in_inc.t t/de-dup.t t/install.t t/lib-core-only.t t/pipeline.t t/stackable.t
t/classmethod.t ...... Name "File::Spec::rel2abs" used only once: possible typo at t/classmethod.t line 20.
t/classmethod.t ...... 1/? Attempting to create directory t/var/splat
t/classmethod.t ...... ok
t/coderefs_in_inc.t .. ok
t/de-dup.t ........... ok
t/install.t .......... skipped: Install Capture::Tiny to test installation
t/lib-core-only.t .... ok
t/pipeline.t ......... ok
t/stackable.t ........ ok
All tests successful.
Files=7, Tests=29, 1 wallclock secs ( 0.06 usr 0.04 sys + 0.36 cusr 0.07 csys = 0.53 CPU)
Result: PASS
APEIRON/local-lib-1.008004.tar.gz
/usr/bin/make test -- OK
Running make install
Installing /Users/Christophe/perl5/html/site/lib/POD2/DE/local/lib.html
Installing /Users/Christophe/perl5/lib/perl5/lib/core/only.pm
Installing /Users/Christophe/perl5/lib/perl5/local/lib.pm
Installing /Users/Christophe/perl5/lib/perl5/POD2/DE/local/lib.pod
Installing /Users/Christophe/perl5/lib/perl5/POD2/PT_BR/local/lib.pod
Installing /Users/Christophe/perl5/man/man3/lib::core::only.3
Installing /Users/Christophe/perl5/man/man3/local::lib.3
Installing /Users/Christophe/perl5/man/man3/POD2::DE::local::lib.3
Installing /Users/Christophe/perl5/man/man3/POD2::PT_BR::local::lib.3
Appending installation info to /Users/Christophe/perl5/lib/perl5/darwin-thread-multi-2level/perllocal.pod
Can't open '/usr/local/ActivePerl-5.14/html/perltoc.html': Permission denied at /usr/local/ActivePerl-5.14/lib/ActivePerl/DocTools.pm line 36.
APEIRON/local-lib-1.008004.tar.gz
/usr/bin/make install -- OK
Tried to deactivate inactive local::lib '/Users/Christophe/perl5'
local::lib is installed. You must now add the following environment variables
to your shell configuration files (or registry, if you are on Windows) and
then restart your command line shell and CPAN before installing modules:
Use of uninitialized value $deactivating in numeric eq (==) at /Users/Christophe/perl5/lib/perl5/local/lib.pm line 354.
Use of uninitialized value $deactivating in numeric eq (==) at /Users/Christophe/perl5/lib/perl5/local/lib.pm line 356.
Use of uninitialized value $interpolate in numeric eq (==) at /Users/Christophe/perl5/lib/perl5/local/lib.pm line 366.
export PERL_LOCAL_LIB_ROOT="/Users/Christophe/perl5";
export PERL_MB_OPT="--install_base /Users/Christophe/perl5";
export PERL_MM_OPT="INSTALL_BASE=/Users/Christophe/perl5";
export PERL5LIB="/Users/Christophe/perl5/lib/perl5/darwin-thread-multi-2levelUsers/Christophe/perl5/lib/perl5";
export PATH="/Users/Christophe/perl5/bin:$PATH";
commit: wrote '/Users/Christophe/.cpan/CPAN/MyConfig.pm'
You can re-run configuration any time with 'o conf init' in the CPAN shell
Running install for module 'App::cpanminus'
Running make for M/MI/MIYAGAWA/App-cpanminus-1.5011.tar.gz
Checksum for /Users/Christophe/.cpan/sources/authors/id/M/MI/MIYAGAWA/App-cpanminus-1.5011.tar.gz ok
/usr/bin/tar: Read 4096 bytes from -
CPAN.pm: Going to build M/MI/MIYAGAWA/App-cpanminus-1.5011.tar.gz
Checking if your kit is complete...
Looks good
Writing Makefile for App::cpanminus
Writing MYMETA.yml
cp lib/App/cpanminus.pm blib/lib/App/cpanminus.pm
cp bin/cpanm blib/script/cpanm
/usr/local/ActivePerl-5.14/bin/perl -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/cpanm
Manifying blib/man1/cpanm.1
Manifying blib/man3/App::cpanminus.3
MIYAGAWA/App-cpanminus-1.5011.tar.gz
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/local/ActivePerl-5.14/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/happy_cpantesters.t .. 1/1 # App::cpanminus/1.5011
t/happy_cpantesters.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.03 cusr 0.01 csys = 0.08 CPU)
Result: PASS
MIYAGAWA/App-cpanminus-1.5011.tar.gz
/usr/bin/make test -- OK
Running make install
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/local/ActivePerl-5.14/html/site/lib/App'
mkdir /usr/local/ActivePerl-5.14/html/site: Permission denied at /usr/local/ActivePerl-5.14/lib/ExtUtils/Install.pm line 494
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
at -e line 1
make: *** [pure_site_install] Error 13
MIYAGAWA/App-cpanminus-1.5011.tar.gz
/usr/bin/make install -- NOT OK
macbook-de-christophe-magnin-746:~ Christophe$
Marsh Posté le 21-04-2012 à 13:23:38
La je ne peux pas t'en dire plus, manifestement, ton compte utilisateur n'a pas les droits de création pour certains répertoires (il le signalait tout au début d'ailleurs) et ça fait échouer l'installation (c'est dommage, elle se déroulait bien et échoue pour une raison non technique, mais administrative).
La c'est de l'ordre de la gestion des droits d'utilisateur sur un Mac, et comme je n'en ai pas manipulé depuis avant OS/X, je ne suis pas le plus apte a te répondre.
Il y aura peut être quelqu'un avec la bonne réponse dans la section Mac du forum.
EDIT: Je crois que j'ai pigé: il faut définir un password administrateur non vide avant de faire sudo: http://support.apple.com/kb/HT4103
A+,
Marsh Posté le 21-04-2012 à 15:40:45
Effectivement bien vu Gilou, il faut jamais mettre un mdp vide(ce que j'avais fais!), je l'ai donc changé. J'ai désinstallé et réinstallé ActivePerl 5.14 et refais la manip avec la console. En refaisant "sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target /" et en spécifiant le nouveau mdp j'ai de nouveau un truc qui coince.
Voilà ce que ça me donne sur la console:
------------------------------------------------------------------
macbook-de-christophe-magnin-746:~ Christophe$ sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target /
Password:
installer: Error the package path specified was invalid: '/Users/Christophe/ActivePerl-5.14.pkg'.
macbook-de-christophe-magnin-746:~ Christophe$
-------------------------------------------------------------------
est-ce que ça veut dire que lors de l'installation automatique le "ActivePerl-5.14.pkg" n'a pas été mis dans le dossier /Users/Christophe/ ? quand je vais voir dans ce dossier aucun fichier ActivePerl-5.14.pkg n'apparait !
Par contre dans Macintosh HD/usr/local le dossier ActivePerl-5.14 apparaît.
Ma question est donc est-ce qu'il faut remplacer la ligne de commande
--> sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target /"
par
--> sudo installer -pkg /Macintosh HD/usr/local/ActivePerl-5.14.pkg -target / ?
Merci encore pour ta grande patience car là même moi je suis en ébullition, chaque fois qu'on arrange quelque chose ça recoince derrière. En tous cas ça remet un peu d'ordre dans mon mac.
Marsh Posté le 21-04-2012 à 16:10:15
Il faut peut être refaire la manip en partant de 0 (recuperer a nouveau le truc de ActiveState, etc), car apparemment il était bien la le coup d'avant (avec le password vide) quand ça a échoué:
Citation : macbook-de-christophe-magnin-746:~ Christophe$ sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target / |
Les lignes qui suivent la ligne Password sont celles de l’exécution de "installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target / "
A+,
Marsh Posté le 21-04-2012 à 16:40:52
J'ai refais toute la manip et ça me renvoie exactement la même chose --> installer: Error the package path specified was invalid: '/Users/Christophe/ActivePerl-5.14.pkg'.
Je vais aussi demander sur la section Mac du forum pour la fin de cette installation si desfois quelqu'un sait quel est le problème.
Marsh Posté le 21-04-2012 à 18:31:21
Pourtant, je vois que ActivePerl-5.14.pkg est contenu dans un répertoire de ActivePerl-5.14.2.1402-darwin-9.8.0-295342.dmg si j'ouvre le fichier sur mon PC avec 7zip.
A+,
Marsh Posté le 21-04-2012 à 18:42:07
Pourtant j'ai bien refais toute l'installation, elle se fait automatiquement et à la fin une fenêtre confirme que l'installation est réussie. Ensuite il faut mettre à la poubelle le fichier ActivePerl-5.14.dmg. Je vais voir si je le trouve quelque part ce fichier.
--------------------------------------
Bon pour ça c'est bon, j'ai repris le fichier ActivePerl-5.14.pkg de départ(sur lequel il faut cliquer 2 fois pour réaliser l'installation sur le mac) et je l'ai copier-coller dans mon dossier /Christophe/ .... j'ai ensuite refais le "sudo installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target /" et ça a marché. Nulle part j'ai vu qu'il fallait faire ça !
C'est déjà pas mal ActivePerl est bien installé sur mon mac. Là je fais une petite pause, je continuerais un peu plus tard ce soir ou demain pour l'installation du module HTML::Tree.
Je me répète, encore merci Gilou ! chacune de tes interventions vaut de l'or
Marsh Posté le 21-04-2012 à 19:52:32
Ben en fait, en y regardant de plus près:
Citation : ActivePerl is distributed on Mac OS X as a disk image (.dmg file). The disk image contains an installer package (.pkg bundle) that installs ActivePerl. |
http://docs.activestate.com/active [...] installing activeperl on mac os x (x86, powerpc)
Il y a pas besoin de faire ma manip avec sudo je pense.
C'est une manip alternative pour ceux qui veulent pas installer en double cliquant sur le fichier .pkg si j'ai bien compris.
A+,
Marsh Posté le 27-04-2012 à 19:24:29
Bonjour, bon le Perl marche sur mon mac et je peux faire tourner mes petits scripts.
Mais je reviens avec deux petits problèmes que j'ai du mal à résoudre en Perl.
Voilà ce que fait mon script, j'essaie de récupérer le code source d'une URL (dans le fichier codesourcealbanie.html) et ensuite je traite avec HTML::TreeBuilder(merci Gilou) ce fichier pour en sortir le fichier texte albanie.txt.
1ère erreur: Le fichier codesourcealbanie.html est bien créer et récupérer avec tout ce qui va dedans, par contre la lettre ë du code source d'origine est convertit en un espèce de losange(ou carré) avec un ? à l'intérieur dans le fichier codesourcealbanie.html. Que dois-je rajouter à mon script pour que le ë soit conservé, y-a-t-il un mauvais encodage?
2ème erreur: Le fichier albanie.txt est créé mais il est vide !
Que faut-il mettre dans le sub get_data pour que le code source de codesourcealbanie.html soit pris en compte, car je pense que c'est là que je fais une erreur non?
Merci à vous.
Code :
|
Marsh Posté le 27-04-2012 à 21:17:16
Ton pb, c'est que get_data ne renvoit pas les data voulues (ça va renvoyer l'évaluation de la dernière instruction, print B "$content"; probablement le nb d'octets écrits)
Si tu veux renvoyer les datas html, mettre en derniere ligne de get_data
return $content;
c'est pas optimisé, mais ça marchera.
Mais si tu n'as pas besoin de sauver en local le fichier html, le plus simple pour toi serait de faire directement
my $url = 'http://www.betexplorer.com/soccer/albania/albanian-1st-league-2011-2012/';
my $tree = HTML::TreeBuilder->new_from_content(get($url));
pour le ë, c'est un pb d'encoding, mais il faudrait que tu expliques en quel encoding doit être ton fichier de sortie.
A+,
Marsh Posté le 28-04-2012 à 12:09:06
Merci gilou ça marche nickel !
pour le ë, j'ai un fichier au départ qui est en utf-8 et j'aimerais que le rendu dans le fichier albanie.txt soit également en utf-8. J'ai essayer un use utf8; mais avec cette version de perl il me semble que c'est pas utile, en tous cas le ë est maintenant transformé en Î dans le fichier albanie.txt. J'ai chercher mais je ne trouve personne qui a eu le même problème, j'ai regardé aussi dans la doc perl mais il y a tellement de trucs que je sais pas exactement où regardé .... je vais encore cherché.
A+
Marsh Posté le 28-04-2012 à 12:28:42
Tu as bien ouvert ton albanie.txt avec un éditeur compatible utf8? parce que si c'est avec notepad...
A+,
Marsh Posté le 28-04-2012 à 14:14:54
Génial, effectivement je l'ai ouvert avec Smultron et ça marche il y a les ë, tu avais raison ça venait pas de Perl mais bien de l'éditeur ! Le TextEdit de mon Mac ne gère apparement pas cet encodage, je vais tout de même me renseigner.
Merci pour ta patience et tes compétences sur ce langage, ce petit exercice m'a pris beaucoup de temps mais grâce à toi j'ai pu avancer et j'ai appris un paquet de choses En tous cas je vois que Perl est un langage très puissant et qu'on peut faire à peu près tout ce que l'on veut avec, mais là il va falloir que je potasse la doc pour progresser.
A+
Marsh Posté le 28-04-2012 à 15:05:56
Une première remarque:
Il manque un
close(A);
en fin de code (on ferme tout fichier ouvert avant de quitter, perl le fera automatiquement, mais autant écrire du code propre)
Si tu veux sauver en utf8, il faut le déclarer à l'ouverture:
open(A,">:utf8", "albanie.txt" );
HTML::TreeBuilder a probablement internalisé le contenu dans le codage interne de Perl (OS dépendant je pense) et cette déclaration devrait tout remettre dans l'ordre si nécessaire.
Si c'est toujours pas reconnu comme de l'UTF8, tu peux toujours ajouter une marque spéciale en tête de fichier
# juste après le open(A,">:utf8", "albanie.txt" );
print A chr(65279);
C'est normalement pas nécessaire, mais certaines applications de Microsoft (notepad par exemple sur PC) ne marchent pas correctement sans.
A+,
Marsh Posté le 13-04-2012 à 19:37:05
Bonjour à tous,
je suis en train de me mettre au langage PERL et j'essaie de récupérer des données sur 2 lignes d'un fichier HTML mais je n'y arrive pas, quand je teste mes deux expressions régulières séparement ça marche mais dès que je veux utiliser les 2 lignes en même temps en spécifiant //sm à la fin de l'expression ça ne fonctionne plus. Voici mon code, si quelqu'un voit l'erreur ce serait cool de me le dire car là je sèche, cela fait quelques jours que je suis dessus et je commence à monter en température .
et voici la portion du fchier HTML sur lequel travail PERL, j'essaie en fait de récupérer le nombre 1. dans tpos">1.</td> et aussi le nom Skenderbeu Korca. Merci à vous si vous voyez où est l'erreur qui doit se situer sur les lignes 18 et/ou 19.
Message édité par thales69 le 13-04-2012 à 19:40:13