OVH Cloud OVH Cloud

Html & split

61 réponses
Avatar
ptilou
Bonsoir,

J'ai un fichier de 50 Mo, je souhaiterais le d=E9couper =E0 chaque fois
qu'il y a la balise <HTML> en un "fichier fille"
Voila se que j'ai fais et marche pas :
#!/usr/local/bin/perl -wn
BEGIN {
$file =3D "$0";
$/ =3D \<HTML>;
$n =3D 1;
}
unless( $n++ % \<HTML> ) { close F;
open F, "> $file.csv"
or die "Impossible de cr=E9er $file.csv: $!";
$file++;
}
print F;

L'erreur : $ perl -w cut-perl partie00
readline() on unopened filehandle HTML at cut-perl line 4.
Use of uninitialized value in <HANDLE> at cut-perl line 1.
readline() on unopened filehandle HTML at cut-perl line 7.
print() on unopened filehandle F at cut-perl line 12.
Use of uninitialized value in <HANDLE> at cut-perl line 12, <> chunk 1.

Mer=E7i

Ptilou

10 réponses

Avatar
damien guerin
Mais non... tsss !!!
Avatar
Laurent Wacrenier
Stephane Zuckerman écrit:
Et si la ligne est

pincemi</HTML>pincemoi

qu'est ce qu'il reste ?


OK. :-)
Cela dit, pour des histoires de "lisibilité" il me semblerait plus
"logique" que les balises <HTML></HTML> soient sur une ligne à part...
Maintenant en effet, le script précédent ne prend pas le cas général en
compte...


On peut penser qu'il suffirait de les lire avec $' et $`, mais il peut
aussi y avoir deux </HTML> sur la ligne...


Avatar
damien guerin
aaaa</HTML>bbbb sera dans le même fichier...
Mais tu peux faire :
if ($line =~ s/(.*</HTML>).*/$1/) {
Du coup tu ne mettera que aaaa</HTML> dans le fichier...!
Le vrai hic d'apres moi c'est si y a </HTML>toto<HTML> sur la même
ligne... là !
Dans le script que je t'ai fourni on teste que sur </HTML> pour être
plus efficace il faudrait controler <HTML> avec. Enfin bref, je pensais
que tu voulais un truc rapide qui marche dans des cas simples...
Avatar
Paul Gaborit
À (at) Wed, 15 Jun 2005 11:46:23 +0000 (UTC),
Laurent Wacrenier <lwa@ teaser . fr> écrivait (wrote):
On peut penser qu'il suffirait de les lire avec $' et $`, mais il peut
aussi y avoir deux </HTML> sur la ligne...


Il se peut même que tout le fichier ne soit qu'une seule ligne très longue
contenant de nombreux couples <HTML>...</HTML>.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Nicolas George
Stephane Zuckerman wrote in message
:
$ perl html.pl toto.html
^^


« One note on the use of the .pl extension: it means Perl library, not Perl
program. Although .pl is sometimes used to identify Perl programs on web
servers that need to distinguish executable programs from static content in
the same directory, we suggest that you use a suffix of .plx instead to
indicate an executable Perl program. (Similar advice holds for operating
systems that choose interpreters based on filename extensions.) »

(Programming Perl, 3e édition, chapitre 30 ;
<URL: http://www.unix.org.ua/orelly/perl/prog3/ch30_02.htm >)

Avatar
Paul Gaborit
À (at) 15 Jun 2005 03:35:00 -0700,
écrivait (wrote):
Ca marche nickel ...
Mais maintenant je voudrais l'améliorer pour qu'il supporte du
binaire, je crois que c'est la commande unpack -h puis pack à la
sauvegarde ?


Heu... ? Maintenant que tout le monde s'est décarcassé pour vous faire votre
script, vous ne voulez pas vous y mettre un peu tout seul ? Personne n'est
payé ici pour faire le travail à votre place...

Comme on dit : « Aide toi et le ciel t'aidra...» et accessoirement peut-être
les contributeurs du forum.

Donc écrivez votre script. Testez-le. Lisez la doc. Corrigez-le.
Retestez-le. Et si il vous reste des problèmes précis de Perl, postez vos
questions ici accompagnée de votre script et des différentes choses que vous
avez essayé pour aboutir.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
damien guerin
Oui c'est vrai... Au début c'est marrant, mais là...
Avatar
Stephane Zuckerman
On Wed, 15 Jun 2005, Nicolas George wrote:

$ perl html.pl toto.html
^^


« One note on the use of the .pl extension: it means Perl library, not Perl
program. Although .pl is sometimes used to identify Perl programs on web
servers that need to distinguish executable programs from static content in
the same directory, we suggest that you use a suffix of .plx instead to
indicate an executable Perl program. (Similar advice holds for operating
systems that choose interpreters based on filename extensions.) »

(Programming Perl, 3e édition, chapitre 30 ;
<URL: http://www.unix.org.ua/orelly/perl/prog3/ch30_02.htm >)


"pan sur le bec !" dirait un certain canard...

Stéphane
qui part faire un mv sur ses .pl ...
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)


Avatar
Emmanuel Florac
Le Wed, 15 Jun 2005 12:08:04 +0000, Nicolas George a écrit :

One note on the use of the .pl extension: it means Perl library, not
Perl program.


C'est étrange, parce qu'on utilise généralement .pm pour les
bibliothèques, et .pl pour les programmes. En fait c'est le cas pour
100% des programmes perl que j'ai vu! J'ai vu des librairies en .pl il y a
des années (du temps de perl 4) mais à part ça...

--
L'Algérie était au bord du gouffre, aujourd'hui elle a fait un grand pas
en avant.
Aït Ahmed.

Avatar
Stephane Zuckerman
C'est étrange, parce qu'on utilise généralement .pm pour les
bibliothèques, et .pl pour les programmes. En fait c'est le cas pour
100% des programmes perl que j'ai vu! J'ai vu des librairies en .pl il y a
des années (du temps de perl 4) mais à part ça...

En tout cas, vim me met en mode perl si l'extension .pl est là et pas .plx

;-)
Idem pour emacs.
--
"Je deteste les ordinateurs : ils font toujours ce que je dis, jamais ce
que je veux !"
"The obvious mathematical breakthrough would be development of an easy
way to factor large prime numbers." (Bill Gates, The Road Ahead)