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

3 4 5 6 7
Avatar
damien guerin
Ben je l'ai mis là non :

Ouvre les yeux...
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {

;)
Avatar
Stephane Zuckerman
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {
Je n'aurais pas mis de tiret avant le i ... : s/.../.../i


--
"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
Stephane Zuckerman
J'ai trouvé l'option i ou est que je dois la metre ?
i Reconnaissance de motif indépendamment de la casse
(majuscules/minuscules).
( C'est dans la doc !)


Justement, si tu as lu la doc, tes yeux sont certainement passés sur la
ligne contenant la syntaxe d'une regexp.

perldoc perlre
sinon
perldoc perlretut

Bref, vouloir faire du Perl, c'est bien, faire l'effort de se corriger
soi-même, c'est mieux. Nous ne sommes pas des debuggers humains. Ou alors
si, mais faut payer.

--
"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
ptilou
Bonjour,

Ben je l'ai mis là non :

Ouvre les yeux...
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {

;)


Je l'ai fait avec sed, mais par curiausité !

;)

Ptilou

Avatar
Paul Gaborit
À (at) 16 Jun 2005 04:47:44 -0700,
écrivait (wrote):
J'ai trouvé l'option i ou est que je dois la metre ?


Vous voulez vraiment qu'on vous le dise ?

i Reconnaissance de motif indépendamment de la casse
(majuscules/minuscules).
( C'est dans la doc !)


Une documentation, ça se lit... et ça se comprend sinon ça ne sert à rien. Si
vous ne comprenez pas ce que dit la doc (perlre par exemple) c'est qu'il faut
commencer par une doc un peu plus facile (perlretut par exemple).

Pareil pour un script. Si vous n'arrivez pas à faire votre script, c'est que
c'est trop difficile pour vous. Commencez pas faire des choses plus
simples. « C'est en forgeant... »

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

Avatar
ptilou
Bonsoir,

damien guerin wrote:
Ben je l'ai mis là non :

Ouvre les yeux...
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {



Oui mais pourquoi à la fin ?

;)


Ptilou

Avatar
Nicolas Le Scouarnec
Ouvre les yeux...
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {

;)
Je l'ai fait avec sed, mais par curiosité !

;)


Hum... s/xxx/XXX/i dans un script Perl c'est pas un appel Sed, ca y
ressemble, mais c'en est pas un pour autant. Ton if ( $ligne =~ /<HTML>/ )
est fondamentalement différent de ce qu'on t'a proposé. Ce qu'on t'a
proposé va marcher, mais ce que tu veux faire ne marchera pas (en
tout cas, pas avec ce qu'on t'a donné après).

Dans la doc, il faut lire ce qu'il y a avant et après pour comprendre
le role du m// du s/// ...

--
Nicolas Le Scouarnec


Avatar
Nicolas Le Scouarnec
Ouvre les yeux...
if ($line =~ s/(.*<s*/s*HTML­s*>).*/$1/­i) {
Oui mais pourquoi à la fin ?



Parce que ? Tu veux qu'on réponde quoi a part man perlre ?
C'est un peu comme si je demandais pourquoi "Quoi" s'écrit avec un i a
la fin.

--
Nicolas Le Scouarnec


Avatar
Paul Gaborit
À (at) 16 Jun 2005 12:17:01 -0700,
écrivait (wrote):
Oui mais pourquoi à la fin ?


Pourquoi pas ?
Pourquoi vous posez-vous cette question ?

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

Avatar
ptilou
Bonjour,

À (at) 16 Jun 2005 12:17:01 -0700,
écrivait (wrote):
Oui mais pourquoi à la fin ?


Pourquoi pas ?
Pourquoi vous posez-vous cette question ?



Simple, je voudrais comprendre pour pouvoir écrire mon script !

Je voudrais cette fois supprimer la présentation de la page de <head>
à </head> et récupérer, le contenue , de la premiére balise <b> et
en faire le titre de la page ainsi que le nom du fichier !
Puis la balise <h5> mais la 5 eme et la metre dans un fichier autre et
qui serait un lien d'ou elle a été extré, etc ...

Merci

Ptilou


3 4 5 6 7