Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1704 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Récupération de donnés multiligne

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupération de donnés multiligne

n°2136414
thales69
Posté le 13-04-2012 à 19:37:05  profilanswer
 

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  :) .
 
http://img692.imageshack.us/img692/9132/image4ui.png
 
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.
 
http://img441.imageshack.us/img441/2701/image5ze.png


Message édité par thales69 le 13-04-2012 à 19:40:13
mood
Publicité
Posté le 13-04-2012 à 19:37:05  profilanswer
 

n°2136445
gilou
Modérateur
Modzilla
Posté le 13-04-2012 à 21:09:08  profilanswer
 

:hello:  
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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136453
thales69
Posté le 13-04-2012 à 21:18:21  profilanswer
 

Désolé j'avais pas pensé à ça :(  
 

Code :
  1. #!C:/Perl/bin/perl.exe -w
  2. use strict; use warnings;
  3.  
  4. open(INPUT1,'albanietable.html') or die "Impossible d'ouvrir albanietable.html en lecture : $!";
  5. open(OUTPUT,'>albanietable1.html') or die "Impossible d'ouvrir albanie.txt en lecture : $!";
  6.  
  7. while (my $ligne = <INPUT1> ) {
  8.         $ligne =~ s/ë/e/g;
  9.         print OUTPUT $ligne;
  10.         }
  11. close (INPUT1);
  12.  
  13.  
  14. open(INPUT2,'<albanietable1.html') or die "Impossible d'ouvrir albanietable.html en lecture : $!";              
  15. open(OUTPUT,">albanie.txt" ) or die "Impossible d'ouvrir albanie.txt en lecture : $!";
  16.  
  17. while (my $ligne = <INPUT2> ) {
  18. if (my ($a) = ($ligne =~ /^tpos">(\d+\.)<\/td>.<th class="team-name"><a href="[^\"]+">([\w+\s*]+)<\/a><\/th>/sm))
  19.         {
  20. print OUTPUT "$1\t$2";
  21.     }
  22. }
  23. close (INPUT2);


 

Code :
  1. <td class="tpos">1.</td>
  2. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=skenderbeu-korca&amp;team_id=432982">Skenderbeu Korca</a></th>


Message édité par thales69 le 13-04-2012 à 22:00:07
n°2136464
gilou
Modérateur
Modzilla
Posté le 13-04-2012 à 22:05:52  profilanswer
 

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 :
  1. my ($num, $flag) = (0, 0);
  2. while (<INPUT2> ) {
  3.  if (/tpos">(\d+\.)<\/td>/) {
  4.    $num = $1;
  5.    $flag = 1;
  6.  }
  7.  else {
  8.    if ($flag and /<th class="team-name"><a href="[^\"]+">([\w+\s*]+)<\/a><\/th>/) {
  9.      print OUTPUT "$num\t$1";
  10.    }
  11.    ($num, $flag) = (0, 0);
  12.  }
  13. }


(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+,


Message édité par gilou le 13-04-2012 à 22:08:02

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136491
thales69
Posté le 13-04-2012 à 23:36:33  profilanswer
 

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 :
  1. <td class="tpos">1.</td>
  2. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=skenderbeu-korca&amp;team_id=432982">Skenderbeu Korca</a></th>
  3. <td class="tcol">20</td>
  4. <td class="tcol">13</td>
  5. <td class="tcol">5</td>
  6. <td class="tcol">2</td>
  7. <td class="tcol tscore">36:13</td>
  8. <td class="tcol nobr">44</td>
  9. </tr>
  10. <tr class="even">
  11. <td class="tpos">2.</td>
  12. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=tirana-sk&amp;team_id=432935">Tirana SK</a></th>
  13. <td class="tcol">20</td>
  14. <td class="tcol">13</td>
  15. <td class="tcol">4</td>
  16. <td class="tcol">3</td>
  17. <td class="tcol tscore">27:15</td>
  18. <td class="tcol nobr">43</td>
  19. </tr>
  20. <tr class="odd">
  21. <td class="tpos">3.</td>
  22. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=teuta-durres&amp;team_id=432908">Teuta Durres</a></th>
  23. <td class="tcol">20</td>
  24. <td class="tcol">13</td>
  25. <td class="tcol">4</td>
  26. <td class="tcol">3</td>
  27. <td class="tcol tscore">23:12</td>
  28. <td class="tcol nobr">43</td>
  29. </tr>
  30. .........


Message édité par thales69 le 13-04-2012 à 23:46:24
n°2136530
gilou
Modérateur
Modzilla
Posté le 14-04-2012 à 11:28:47  profilanswer
 

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 :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. use HTML::TreeBuilder;
  6.  
  7. my $tree = HTML::TreeBuilder->new_from_content(get_data());
  8. my @tr = $tree->find('tr');
  9. foreach (@tr) {
  10.  my @infos = ();
  11.  my $td = $_->look_down("_tag", "td", "class", "tpos" );
  12.  next unless ($td);
  13.  my @content = $td->content_list();
  14.  push @infos, $content[0];
  15.  my $th = $_->look_down("_tag", "th", "class", "team-name" );
  16.  next unless ($th);
  17.  my $a = $th->find('a');
  18.  next unless ($a);
  19.  @content = $a->content_list();
  20.  push @infos, $content[0];
  21.  my @td1 = $_->look_down("_tag", "td", "class", qr/^tcol(\s.*)*$/);
  22.  foreach (@td1) {
  23.    @content = $_->content_list();
  24.    push @infos, $content[0];
  25.  }
  26.  print "@infos\n";
  27. }
  28. $tree = $tree->delete;
  29.  
  30. # pour tester sans ouvrir et fermer un fichier a chaque fois
  31. sub get_data {
  32. return <<EOF;
  33. <tr class="even">
  34. <td class="tpos">1.</td>
  35. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=skenderbeu-korca&amp;team_id=432982">Skenderbeu Korca</a></th>
  36. <td class="tcol">20</td>
  37. <td class="tcol">13</td>
  38. <td class="tcol">5</td>
  39. <td class="tcol">2</td>
  40. <td class="tcol tscore">36:13</td>
  41. <td class="tcol nobr">44</td>
  42. </tr>
  43. <tr class="even">
  44. <td class="tpos">2.</td>
  45. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=tirana-sk&amp;team_id=432935">Tirana SK</a></th>
  46. <td class="tcol">20</td>
  47. <td class="tcol">13</td>
  48. <td class="tcol">4</td>
  49. <td class="tcol">3</td>
  50. <td class="tcol tscore">27:15</td>
  51. <td class="tcol nobr">43</td>
  52. </tr>
  53. <tr class="odd">
  54. <td class="tpos">3.</td>
  55. <th class="team-name"><a href="/soccer/albania/albanian-1st-league-2011-2012/teaminfo.php?team=teuta-durres&amp;team_id=432908">Teuta Durres</a></th>
  56. <td class="tcol">20</td>
  57. <td class="tcol">13</td>
  58. <td class="tcol">4</td>
  59. <td class="tcol">3</td>
  60. <td class="tcol tscore">23:12</td>
  61. <td class="tcol nobr">43</td>
  62. </tr>
  63. EOF
  64. }


 
L'explication rapide du code:

Spoiler :

On crée une structure interne propre à HTML::TreeBuilder à partir des données HTML pour pouvoir bosser:
my $tree = HTML::TreeBuilder->new_from_content(get_data());
Il faudra le détruire quand on n'en aura plus besoin (bouffe de la mémoire):
$tree = $tree->delete;
HTML::TreeBuilder rajoute des éléments implicites si nécessaire (il va rajouter ici des éléments html, head, body et table), tu peux faire un $tree->dump; pour voir un résumé de la structure de l'arbre construit.
Je récupère la liste des éléments de tag tr:
my @tr = $tree->find('tr');
Pour chaque element tr trouvé, je cherche dedans un élément de tag td et dont l'attribut classe vaut tpos
my $td = $_->look_down("_tag", "td", "class", "tpos" );
J'en récupère le contenu (une liste)
my @content = $td->content_list();
Et le contenu qui m'intéresse est le premier (et unique) élément de la liste, que je met dans une liste @infos
push @infos, $content[0];
Pour chaque element tr trouvé, je cherche dedans un élément de tag th et dont l'attribut classe vaut team-name
my $th = $_->look_down("_tag", "th", "class", "team-name" );
et dedans, je cherche un élément de tag a
my $a = $th->find('a');
je récupere le contenu que je met dans @infos
...
Pour chaque element tr trouvé, je récupère la liste des éléments de tag td et dont l'attribut classe vérifie l'expression régulière /^tcol(\s.*)*$/
my @td1 = $_->look_down("_tag", "td", "class", qr/^tcol(\s.*)*$/);
pour chaque élément de cette liste je récupere le contenu que je met dans @infos
...
Enfin, j'imprime @infos avant de reboucler
print "@infos\n";
Ici, il y a une astuce: les double " autour de la liste dans le print permet d'avoir les éléments de la liste séparés par un espace.
Tu peux comparer ce que donne
print "@infos", "\n";
et  
print @infos, "\n";


N'hésites pas à poser des questions s'il y a des choses que tu ne comprends pas.
A+,


Message édité par gilou le 14-04-2012 à 11:31:15

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136570
thales69
Posté le 14-04-2012 à 16:04:37  profilanswer
 

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.

n°2136576
gilou
Modérateur
Modzilla
Posté le 14-04-2012 à 17:11:36  profilanswer
 

Quelle distribution de Perl sur le Mac? Celle d'active state ou une autre?
A+,


Message édité par gilou le 14-04-2012 à 17:12:44

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136578
thales69
Posté le 14-04-2012 à 17:15:56  profilanswer
 

j'ai fait un perl -v et ça m'a donné ça : This is perl, v5.8.8 built for darwin-thread-multi-2level


Message édité par thales69 le 14-04-2012 à 17:16:23
n°2136623
gilou
Modérateur
Modzilla
Posté le 14-04-2012 à 22:31:23  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 14-04-2012 à 22:31:23  profilanswer
 

n°2136636
thales69
Posté le 15-04-2012 à 00:22:52  profilanswer
 

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.

n°2136712
thales69
Posté le 15-04-2012 à 18:57:52  profilanswer
 

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.
 


Message édité par thales69 le 27-04-2012 à 18:33:51
n°2136725
gilou
Modérateur
Modzilla
Posté le 15-04-2012 à 20:07:00  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136732
thales69
Posté le 15-04-2012 à 20:37:04  profilanswer
 

Oui ben je vais installer ActivePerl parce que là c'est trop la galère !

n°2136743
gilou
Modérateur
Modzilla
Posté le 15-04-2012 à 21:43:37  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136767
thales69
Posté le 16-04-2012 à 00:38:25  profilanswer
 

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 ?

n°2136769
gilou
Modérateur
Modzilla
Posté le 16-04-2012 à 02:35:19  profilanswer
 

Non, c'est du pareil au même (PHP est assez fortement basé sur Perl) et moins efficace probablement.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2136788
gilou
Modérateur
Modzilla
Posté le 16-04-2012 à 09:53:05  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2137951
thales69
Posté le 20-04-2012 à 15:12:26  profilanswer
 

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

n°2138007
gilou
Modérateur
Modzilla
Posté le 20-04-2012 à 19:46:47  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2138033
thales69
Posté le 20-04-2012 à 23:26:10  profilanswer
 

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 !


Message édité par thales69 le 20-04-2012 à 23:28:22
n°2138034
gilou
Modérateur
Modzilla
Posté le 20-04-2012 à 23:35:27  profilanswer
 

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+,


Message édité par gilou le 20-04-2012 à 23:36:07

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2138057
thales69
Posté le 21-04-2012 à 11:38:47  profilanswer
 

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-2level:/Users/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$  

n°2138066
gilou
Modérateur
Modzilla
Posté le 21-04-2012 à 13:23:38  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2138079
thales69
Posté le 21-04-2012 à 15:40:45  profilanswer
 

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.
 

n°2138083
gilou
Modérateur
Modzilla
Posté le 21-04-2012 à 16:10:15  profilanswer
 

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 /  
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>>  
...


Les lignes qui suivent la ligne Password sont celles de l’exécution de "installer -pkg /Users/Christophe/ActivePerl-5.14.pkg -target / "
A+,


Message édité par gilou le 21-04-2012 à 16:13:25

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2138086
thales69
Posté le 21-04-2012 à 16:40:52  profilanswer
 

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.

n°2138092
gilou
Modérateur
Modzilla
Posté le 21-04-2012 à 18:31:21  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2138093
thales69
Posté le 21-04-2012 à 18:42:07  profilanswer
 

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 :)


Message édité par thales69 le 21-04-2012 à 19:45:05
n°2138097
gilou
Modérateur
Modzilla
Posté le 21-04-2012 à 19:52:32  profilanswer
 

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.
 
Download the ActivePerl disk image (ActivePerl-<version>-<platform>.dmg).
If the browser does not automatically mount the disk image and open the mounted folder in Finder, double-click ActivePerl-<version>-<platform>.dmg to do so.
Double-click the ActivePerl installer package (ActivePerl-<version>.pkg) to start the installation.
Follow the 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.


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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2139550
thales69
Posté le 27-04-2012 à 19:24:29  profilanswer
 

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 :
  1. #!C:/Perl/bin/perl.exe -w
  2. use strict; use warnings;
  3. use HTML::TreeBuilder;
  4. use LWP::Simple;
  5. open(A,">albanie.txt");
  6. open(B,">codesourcealbanie.html");
  7. my $tree = HTML::TreeBuilder->new_from_content(get_data());
  8. my @tr = $tree->find('tr');
  9. foreach (@tr) {
  10.   my @infos = ();
  11.   my $td = $_->look_down("_tag", "td", "class", "tpos" );
  12.   next unless ($td);
  13.   my @content = $td->content_list();
  14.   push @infos, $content[0];
  15.   my $th = $_->look_down("_tag", "th", "class", "team-name" );
  16.   next unless ($th);
  17.   my $a = $th->find('a');
  18.   next unless ($a);
  19.   @content = $a->content_list();
  20.   push @infos, $content[0];
  21.   my @td1 = $_->look_down("_tag", "td", "class", qr/^tcol(\s.*)*$/);
  22.   foreach (@td1) {
  23.     @content = $_->content_list();
  24.     push @infos, $content[0];
  25.   }
  26.   print A "@infos\n";
  27. }
  28. $tree = $tree->delete;
  29. sub get_data {
  30.   my $url = 'http://www.betexplorer.com/soccer/albania/albanian-1st-league-2011-2012/';
  31.   my $content = get $url;
  32.   die "Couldn't get $url" unless defined $content;
  33.   print B "$content";
  34. }


Message édité par thales69 le 27-04-2012 à 19:48:49
n°2139567
gilou
Modérateur
Modzilla
Posté le 27-04-2012 à 21:17:16  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2139615
thales69
Posté le 28-04-2012 à 12:09:06  profilanswer
 

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+

n°2139616
gilou
Modérateur
Modzilla
Posté le 28-04-2012 à 12:28:42  profilanswer
 

Tu as bien ouvert ton albanie.txt avec un éditeur compatible utf8? parce que si c'est avec notepad...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2139623
thales69
Posté le 28-04-2012 à 14:14:54  profilanswer
 

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+


Message édité par thales69 le 28-04-2012 à 14:32:59
n°2139629
gilou
Modérateur
Modzilla
Posté le 28-04-2012 à 15:05:56  profilanswer
 

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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Récupération de donnés multiligne

 

Sujets relatifs
Récupération de plusieurs données Yahoo Finance[JS et PHP] Récupération des donées d'un Select multiple
Problème récupération de cookie [edité mais non résolu]Récupération de données sur allociné
[c#] Problème de récupération membervalue depuis comboboxRécupération de la date et de lheure sur un serveur de temps.
[BATCH] récupération taille total disque[DOS] Récupération valeur dans un fichier
xsl problème de recuperation de valeurpb récupération des données dans un formulaire
Plus de sujets relatifs à : Récupération de donnés multiligne


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR