[Perl] Problème avec Chomp :O

Problème avec Chomp :O [Perl] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-07-2004 à 14:24:47    

Code :
  1. #!/usr/bin/perl
  2. # Ouverture du fichier htm
  3. open(AVIS,'avis1.htm');
  4. @lignes=<AVIS>;
  5. # Verification html
  6. chomp($lignes[0]);
  7. if ($lignes[0] eq "<HTML>" ) { print "HTML" }
  8. else { print "NO HTML" }
  9. # Fermerture du fichier htm
  10. close AVIS;


 
Voila voila, je fais un script en perl, qui est censé lire un fichier html pour en extraire des données, et je galère dès le début pour vérifier que le code est bien en HTML.
 
Je n'arrive pas à comparer la première ligne de mon fichier avec une chaine de caractère bannale. J'ai essayé de virer le caractère de fin de chaine avec chomp, mais la je perds toute ma chaine de caractère.
 
Si vous avez des idées [:romf]


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Marsh Posté le 05-07-2004 à 14:24:47   

Reply

Marsh Posté le 05-07-2004 à 16:57:45    

s/if ($lignes[0] eq "<HTML>" )/if ($lignes[0] == "<HTML>" )/


---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
Reply

Marsh Posté le 05-07-2004 à 17:08:38    

en plus, un document html commence pas toujours pars <html> ni <HTML>
 
tu devrais utiliser un parseur spécialisé, ça sera mieux

Reply

Marsh Posté le 05-07-2004 à 23:58:47    

arghbis a écrit :

en plus, un document html commence pas toujours pars <html> ni <HTML>
 
tu devrais utiliser un parseur spécialisé, ça sera mieux


 
+1


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 06-07-2004 à 12:22:30    

Salut,
 
Deja, je pense que  
 
@lignes = <AVIS>
 
n'est pas correct. Avec perl tu ne peut pas reaffecter comme ca un tableau ca ne marchera pas. Perl lit le fichier ligne par ligne.
 
Donc utilise par exemple
 
while <AVIS>
my $ligne = <AVIS>;
 
 
Ou autre chose si tu ne veut lire que la premiere ligne comme  
 
my $lignr = <AVIS>;
 
 
De plus tu devrais faire gaffe aux variables
 
strict 'refs';
 
et la ca devrait mieux marcher.
 
Utiliser un parser spécialisé pour faire ca c'est n'importe quoi ! Perl suffit amplement.
 
joa

Reply

Marsh Posté le 06-07-2004 à 12:24:11    

@lines = <FENT>;
 
ca fonctionne à merveille
 
sinon oui perl peut faire ca, mais perl a aussi des librairies dites "parser" qui sont déjà capable de lire un fichier html en mémoire de facon structuré, pk s'entêté à recoder quelque chose de déjà fait


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 06-07-2004 à 12:32:13    

hi
 
pour le coup du tableau je savais pas.
pour le parser, ok d'accord, mais bon peut etre pas besoin de toute la structure html du document pour reconnaitre si c'est un document html non ?
 
joa

Reply

Marsh Posté le 06-07-2004 à 13:02:29    

ben si. enfin, tu peux réinventer la roue si tuveux hein, personne t'en empêche, mais ne donne pas ce mauvais conseil aux autres

Reply

Marsh Posté le 07-07-2004 à 17:49:34    

pourquoi faire simple, quand on peut faire compliqué?
vive le parser!

Reply

Marsh Posté le 07-07-2004 à 17:50:55    

:D finalement j'ai fait autrement avec du php ;)
 
Merci pour tout


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed