pluriTAL – BLOG Master pluriTAL [ParisX, ParisIII, INALCO]

Modifications sur tree-tagger2xml.pl (suite)

Posted in Boîte à Outils, Projet 2006-2007 by pluritaluser on 21 février 2007

Pardon j’ai oublié de signer!

C’était Marianna en direct de l’ILPGA.

Bon courage à tous!

Modifications sur tree-tagger2xml.pl

Posted in Boîte à Outils, Projet 2006-2007 by pluritaluser on 21 février 2007

Bonjour à tous,

Quelques modifs sur tree-tagger2xml.pl:

Voici la solution pour retirer le retour à la ligne qui apparaît systématiquement après le lemme dans le fichier xml sortie tree-tagger:
$Ligne=~s/(.*?)(\r)$/$1/g;
Le caractère fin de ligne à supprimer est « \r » et non « \n « , puisqu’il a été généré par cygwin! (ce serait trop beau si c’était toujours le même!)
On peut supprimer les chevrons à « unknown » dans tree-tagger2xml (plutot que dans le lancement de tree-tagger avec l’option -no -unknown):

$Ligne=~s/\<unknown\>/unknown/g;

BàO séance n°4

Posted in Boîte à Outils, Projet 2006-2007 by tal-p3 on 14 février 2007

4ème séance le 14/02/2007

Suite BàO série 2 « étiquetage »
Mise en oeuvre du programme « étiquetage » sur le corpus de travail : via treetagger et cordial.
Prochaine séance la semaine prochaine :

  • BàO série 3 :

    • en entrée, les sorties produites dans BàO série 2 (sortie étiquetée « brute » et structurée),
    • en sortie des extractions de patrons syntaxiques (via programme ou via XSLT/XPath).
    • Détail sur la page du cours.

BàO séance n°3

Posted in Boîte à Outils, Projet 2006-2007 by tal-p3 on 8 février 2007

3ème séance le 07/02/2007

Début BàO série 2 « étiquetage »
Mise en oeuvre du programme « étiquetage » sur le corpus de travail : via treetagger et cordial. 2 versions du programme : étiquetage à la volée avec treetagger, étiquetage global avec cordial.
Prochaine séance la semaine prochaine :

  • suite BàO série 2 …

procédure de nettoyage Cours 3

Posted in Boîte à Outils, Projet 2006-2007 by pluritaluser on 7 février 2007

Salut à tous!

voici le bout de code pour nettoyer les 4 entités qui posent problème à l’affichage (si j’ai bien compris, il n’y en a que 4, mais c’est à vérifier!!)

sub nettoyage {
my ($ligne) = shift(@_);
$ligne=~s/’/’/g;
$ligne=~s/é/é/g;
$ligne=~s/ê/è/g;
$ligne=~s/ »/ »/g;
return $ligne;
}

bon taf à tous! :p

Marguerite

BàO séance n°2

Posted in Projet 2006-2007 by tal-p3 on 31 janvier 2007

2ème séance le 31/01/2007

Lecture « détaillée » du programme de parcours d’arborescence.
Mise en oeuvre du programme sur le corpus de travail après intégration du processus de filtrage
Prochaine séance la semaine prochaine :

  • Fin de BàO série 1
  • Début BàO série 2 : étiquetage

BàO séance n°1

Posted in Boîte à Outils, Projet 2006-2007 by tal-p3 on 17 janvier 2007

1ère séance le 17/01/2007


Présentation générale de la série « Boîte à Outils » (slides BàO intro).

Présentation de la chaîne des traitements à mettre en oeuvre.

Présentation du corpus de travail (introduction à RSS, présentation des fils RSS traités)

  • Début « Boîte à Outils » Série 1 (Slides BàO perl)
    • écriture du programme de filtrage et du programme de nettoyage
    • finir les 2 programmes pour la prochaine séance
  • Présentation du travail à rendre : parcours d’une arborescence de fils (filtrage des zones textuelles et nettoyage)


Prochaine séance dans 15 jours :

  • Lecture « détaillée » du programme de parcours d’arborescence
  • Modification du programme pour réaliser le travail demandé

Série « Boîte à Outils » 2006/2007

Posted in Boîte à Outils, Projet 2006-2007 by tal-p3 on 7 janvier 2007

Série des Boîtes à Outils : Master Tal
Mise en oeuvre d’une chaîne de traitement textuel semi-automatique,
depuis la récupération des données jusqu’à leur présentation
.
Module « Programmation et projet encadré » (S. Fleury/R. Belmouhoub) 2006/2007
Les ressources pointées sur la page infra nécessitent des identifiants de connexion qui seront donnés en cours.

(clic sur l’image pour accéder au sommaire de la série BàO)

= »1

Travaux Réalisés – Master TAL Semestre 1 – 2006/2007 : projet « barrage »

Posted in Projet 2006-2007 by tal-p3 on 7 janvier 2007

AB-CJ : dernier problème avec wget.

Posted in Projet 2006-2007 by pluritaluser on 18 décembre 2006

Bonsoir à tous,

vous devez sans doute avoir fini votre programme, même votre rapport, et puis et puis il y a un petit problème. Lorsque vous regardez votre tableau résultat vous vous apercevez qu’il y a bien une URL pointant vers un site en ligne bien visible avec votre navigateur mais que les pages aspirées, lynxées et contextualisées sont vides, des cellules blanches, des liens pointant sur des pages blanches.

C’était notre cas à Arianna et Moi, et nous étions vraiment très perturbés, surtout que nous pouvions nous vanter d’avoir un programme robuste croyez-t-on. Nous étions sûr de vérifier que le téléchargement de wget avait bien fonctionné avant d’exécuter la suite des traitements. Nous avions fait une erreur que voici :

Pour tester la réussite de wget nous faisions :

wget …. -O $ficDestAsp url

if [ -f $ficDestAsp ]

then

lynx ….

fi

Nous pensions que tester l’existence du fichier avec -f était suffisant mais il n’en est rien, car wget même s’il commet une erreur de téléchargement, va créér ce fichier mais il sera vide.

La véritable solution consiste à regarder le code de sortie du programme wget qui est visible dans la variable interne du shell $? qui vaut 0 (zéro) en cas de succès et autre en cas d’erreur.

Voici la solution :

wget … -O $ficDestAsp url

err=$? ## Il vaut mieux la sauvegarder dans une autre variable et tester cette variable car $? est très souvent

##modifiée

# Le test sur le fichier est optionnel, mais j’aime l’élégance de la ligne suivante.

if [ -f $ficDestAsp ] && [ $err -eq ‘0’ ]
then

lynx, ……
else

#loggue url recalcitrante

fi

Parmi les causes possibles nous avions identifiés une erreur qui nous paraissait improbable mais qui nous est arrivée, c’est que nous utilisions dans wget les options password et user, ainsi certains sites où leurs pages ne demandent pas de mot de passe, en leur fournissant un mot de passe, l’accès était refusé à wget, nous obtenions une page forbidden access mais heureusement pas stocké dans le fichier html, celui restant vide mais existant. Dans un tel cas wget renvoie 1, super.

Les autes problèmes concernent souvent les user-agent, les sites webs attendent internet explorer ou mozilla/netscape comme navigateur qui est déclaré dans la variable user-agent, s’il voit wget il refuse de servir la page, dans ce cas on obtient aussi un 1, ce cas demande plus de vérification.

Avec ce test, nous n’avons plus de page blanche dans notre tableau résultat, il est enfin tout beau.

Arianna et Christian.

Fin progressive du semestre…

Posted in Projet 2006-2007 by tal-p3 on 18 décembre 2006

Les notes de tous les enseignements du semestre 1 2006/2007 seront affichées progressivement sur le site pluriTAL (page du master).

Les travaux du cours : « Programmation et projet encadré » (S. Fleury/R. Belmouhoub) (i.e le Projet Barrage) seront mis en ligne progressivement sur le site du Master sur cette page :

http://tal.univ-paris3.fr/plurital/travaux-2006-2007/tr0607-masterproj-sem1.htm

En cas de pb envoyer un message à SF (via serge.fleury@univ-paris3.fr)

AB : journal de bord du 28 novembre

Posted in Projet 2006-2007 by pluritaluser on 9 décembre 2006

Bonsoir,

Voici encore une partie de mon journal de bord d’il y a 10 jours, alors que je découvrais comment créer un tableau html.

(En fait j’ai oublié de le poster avant! ;)

28 novembre

1) comment créer une colonne contenant les pages aspirées avec la commande wget :

Les pages web doivent être aspirées, une par une, lors même de l’exécution du programme fait-tableau. C’est donc à l’intérieur de la boucle, et au début de celle-ci, qu’il faut introduire la nouvelle instruction.

wget -O ./PAGES-ASPIREES/$i.html $nom

-O : sert à appeler le fichier nouvellement créé par le nom qui suit. (Attention au chemin relatif !)

i : est le nom d’une variable compteur que l’on emploie pour numéroter les noms des fichiers créés.

Elle doit être initialisée au début du script et incrémentée à chaque boucle.

Pour insérer les liens aux pages aspirées dans une colonne du tableau :

<td><a href=”../PAGES-ASPIREES/$i.html”>page aspirée $i</a></td>

2) comment créer une colonne contenant le texte simple de mes pages web :

J’utilise lynx, un navigateur qui affiche uniquement les zones de texte d’un site web directement à la console. L’option –dump nous permet de récupérer du texte simple, c.-à-d. sans balises html ni mise en forme.

lynx -dump $nom > ./DUMP-TEXT/$i.txt

. . .

<td width><a href=”../DUMP-TEXT/$i.txt”>page dumpée $i</a></td>

3) comment créer une colonne contenant les contextes du mot « barrage » :

La commande egrep sert à filtrer un texte, c.-à-d. à sélectionner les lignes d’un texte où une chaîne de caractères donnée (dite motif) apparaît.

 

egrep -i -A 2 -B 2 “barrage” ./DUMP-TEXT/$i.txt

-i : indépendamment de la casse

-A n (after) –B n (before) : sélectionne aussi n lignes après et avant la ligne contenant le motif

 

Afin de mettre en évidence le mot « barrage » à chaque fois qu’il apparaît on peut se servir de la commande de substitution sed –s qui nous permet d’entourer le mot par des balises comme <b>, <font color= “…”>ou <strong>.

. . . | sed ’s/[bB][aA][rR][rR][aA][gG][eE]/\<strong\>barrage\<\/strong\>/g’

[bB][aA]… : pour substituer la chaîne “barrage” indépendamment de la casse

… \<\/ … : pour déspécialiser les caractères spéciaux

Maintenant on a deux possibilités pour inclure le contexte dans le tableau : soit on stocke le résultat du filtrage dans des fichiers numérotés et on crée des liens renvoyant à ces fichiers – comme on a fait pour les deux colonnes précédentes ; soit on affiche directement ce résultat dans une colonne du tableau. Pour ce faire il faut affecter le résultat de egrep à une variable.

 

contexte=`egrep -i -A 2 -B 2 “barrage” ./DUMP-TEXT/$i.txt | sed ’s/[bB][aA][rR][rR][aA][gG][eE]/\<strong\>barrage\<\/strong\>/g’`

. . .

<td>$contexte</td>

4) Comment définir la largeur des colonnes :

Je veux laisser plus de place à la 4ème colonne qui contient le texte. J’utilise l’attribut width pour choisir la largeur en pixel ou en pourcentage du tableau.

<td width=”15%”>. . . </td>

<td width=”55%”> . . . </td>

Les tableaux peuvent maintenant être créés. Il serait intéressant d’automatiser cette même tâche afin que tous les tableaux soient crées simultanément. Le nouveau programme demandera donc comme seule entrée le nom du répertoire, qu’il affectera à une variable $rep. Ensuite il devra répéter les opérations de création du tableau pour chaque fichier .txt contenant une liste d’url. De plus il se servira du nom de chaque fichier pour nommer les pages aspirées et les pages dumpées liées à ce sens spécifique du mot « barrage ».

Les noms des fichiers seront du type :

../PAGES-ASPIREES/$fic-$i.html

ce qui permet une bonne lisibilité de notre arborescence.

Pour réaliser tout cela, il faut bien sûr imbriquer deux boucles. C’est un peu compliqué mais faisable. Par contre ce qui me pose problèmes c’est toujours la question des chemins relatifs. J’ai enfin décidé de me placer dans le répertoire $rep lors de l’exécution (cela facilite la lecture des différents fichiers-liste qui se trouvent dans ce même répertoire) et d’en ressortir à la fin du script.

Dernière modification importante : je veux qu’un tableau global soit créé en même temps que les sous-tableaux. Je recopie chaque instruction echo pour l’envoyer à un fichier au nom prédéfini (./JOURNAL/global-tablo.html). Seule différence, le code de début de tableau doit être envoyé une seule fois au fichier, c’est pourquoi il sera placé à l’extérieur des deux boucles.

Le script fait-tableau-2boucle.sh est maintenant opératif.

 

Bon courage pour finir vos projets, et aussi pour tous les autres devoirs.

Vivement les vacances!

Arianna

ME@HOME rapport

Posted in Projet 2006-2007 by pluritaluser on 7 décembre 2006

EZZAT Mani

iop, j’étais parti sur un layout de site très graphique, avec photoshop et consort, et j’ai finalement abandonné. Ce n’est pas forcément plus clair, surtout pour un rapport, et pas très maléable non plus. Cela reste plus technique certes, mais pour un résultat mitigé. Par expérience, quand on fait un site, je sais que trop en faire ne mene a rien au final.

J’ai adopté le format des casacading sheet style comme Ivan et Christian-Arianna, et décidé de ne mettre aucune image dans le layout, d’avoir un outil que je pourrai utiliser plus tard (pour dautres rapports par exemple), et donc de finalement rester le plus sobre possible, en gardant une certaine esthétique, mais de maniere a ce que le tout reste soit succint et efficace.

http://sandalettes.free.fr/DOCUMENTATION/Index.html

Voici ce que ca donne (jai pas tout rempli évidemment)

Vous pouvez tout pompé si ca vous chante, j’ai moi-meme pompé a droite et a gauche pour les styles (je ne saurais vous donner l’adresse des sources, j’ai juste navigué aléatoirement et pris des élement provenant de plusieurs sites). La seule partie technique ici est le descriptif qui apparait sur un rollover de la souris sur le menu a gauche. Il est possible de réaliser en html pur, avec un petit truc dans le CSS (a priori, on pourrait croire que c’est réalisable uniquement avec du javascript, mais non). Autre remarque, jme fais un peu plaisir dans la rédaction là, mais bon, c’est peut etre plus amusant à lire, et ca se cantonnera surment a l’intro, le reste étant purement descriptif finalement

AB-CJ-PED14-13: La fin approche.

Posted in Projet 2006-2007 by pluritaluser on 7 décembre 2006

Bonjour à tous, la pression monte, le stress, le rush, l’adrénaline que c’est bon !!

Nous Arianna et Christian avons mis en place quelque chose de plutôt bien du point de vue de la présentation.

Pour notre site/rapport de projet nous avons utilisé des CSS, ce qui nous a permis de séparer la logique du document de sa présentation.

En effet nous avons nos pages html qui incluent un fichier .css

Pour dire vrai ce fichier .css on l’a pris sur un site qui offrait un tutorial :

<a href= »http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design-css »&gt; http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design-css</a&gt;

Nous avons modifier un peu la mise en page en créant nos propres images, en changeant les couleurs, …

Passons sur les détails de mise en pages mais ce que cela nous a permis c’est de ne n’avor à s’occuoer que de la structure de notre document.

C’est à dire écrire un plan avec des menus sous formes de listes et des titres reflétant ce menu <h1> <h2> <h3>, nos avons exclu tout tableau de notre mis en page hormis un seul tableau dont je vous laisse deviner lequel.

La feuille de style est appelé dans le fichier html de la manière suivante :

<head>
   <title>Projet Encadré : Barrage réalisé par CJ & AB</title>
   <meta name="author" content="Christian Jean et Arianna Bisazza" />
   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
   <meta http-equiv="Content-Language" content="fr" />
   <meta name="keywords" lang="fr" content="tal taln barrage INALCO ILPGA" />
   <link rel="stylesheet" type="text/css" href="styles.css" />
</head>

c’est la balise link qui indique la feuille de style à insérer.

Votre formatage est donc dans le fichier styles.css

C’est vraiment pratique car vous pouver répartir le travail avec votre binôme si vous penser le document logiquement ensemble préalablement. Chacun écrit sa page web, remplissant les parties avec le niveau titre déterminé à l’avance, la mise en forme : couleur, font, … sera géré automatiquement par la css.

Par exemple il suffira de metrte vos extraits de code à l’intérieur de la balise <pre> </pre>

Et si jamais à l’intérieur de votre code vous voulez colorer vos commentaires il suffira d’ajouter les balises <span> </span>

<pre>

<span>#Ceci est un commentaire </span>

echo « toto »;

</pre>

Dans la css il y aura des choses comme cela :

pre
{
overflow: auto ;

background: #c3c3e0 ;
border: 2px solid #1f1ff6 ;
padding: 5px 0 0 5px ;
font-size: 1.2em ;
}

pre span
{
color: #560 ;
}
/* Couleur de texte des éléments compris dans des span eux mêmes compris dans un
pre */

Si vous voulez voir un site étonnat avec les css il faut visiter la référence qui est

http://www.csszengarden.com/ c’est la même page html, mais on peut choisir d’appliquer des css différentes.

Pour ceux qui auraient l’idée d’utiliser les cadres (frame) voici un petit article :

http://www.openweb.eu.org/articles/finir_cadres/

C’est une liste des inconvénients des cadres.

Quelques petits autres trucs :

– Avez vous pensez à faire des liens sur les pages des bloggueurs ? Il s’intègre comme n’importe quel autre lien.

– Et aussi il y a des pages de manuel de commande en ligne et en français. Donc il est tout à fait possible de faire un lien de wget par ex vers sa page de manuel en ligne. Il existe aussi l’outil man2html qui permet de convertir une page de manuel en html que vous pourrez mettre dans l’arborescence de votre site.

Voilà c’était juste quelques idées qui, nous pensons peuvent améliorer le site rapport. Nous avions peu d’expérience dans le web, mais en réutilisant des choses bien faîtes on arrive à des résultats agréables.

CJ et AB.

ME@SAOULED :D

Posted in Projet 2006-2007 by pluritaluser on 30 novembre 2006

EZZAT, Mani.

Hello everyone.

Alors voilà, si je me réfère strictement au sujet de ce mini-projet, je peux dire que je l’ai fini. Néanmoins, je n’ai pas encore ajouté toutes les optimisations que je voulais, à savoir :

Gestion des liens morts (OK)

C’est assez simple à mettre en place en utilisant une certaine variable d’environnement intégré dans Perl.

Afficher un tableau de 20 lignes maximum, passer sur une autre page après, en prenant soin de mettre des links sur la page précedente et suivante (OK)

Ca a l’air simple comme ca, mais croyez-moi, c’est probablement l’option la plus difficile à implémenter niveau code, car cette mini option va impliquer de nombreuses structures conditionnelles imbriquées et si cela reste lisible, ce n’est pas abordable par le premier venu. Oubliez pas que la premiere page n’a qu’un seul lien vers la suivante, la derniere page n’a qu’un seul lien vers la précédente, et tout les pages entre ont deux liens pointant vers la suivante et la précédente. Si vous traitez les « else » quand il faut les traiter, en considérant que ces structures conditionnelles imbriquées, sont elle même comprises dans des boucles imbriquées, on s’en sort plus.

Petit tips pour vous aider : Vous pouvez rester à deux variables en utilisant la condition (pour 20 lignes dans un tableau) « if($i%20==0) etc… ». J’avais déja rencontré un problème similaire auparavant, donc ici, j’ai immédiatement pensé à l’utilisation du modulo, qui indique LE RESTE d’une division. Donc si on se base sur des tableaux de 20 lignes, il suffit de vérifier que votre compteur est divisible par 20 (ou que son reste soit égal à 0 en d’autres termes). Si vous passez par une troisième variable pour la comparaison, en considérant la structure du code (les conditions, les boucles), vous allez droit en enfer. Car incrémenter ou décrémenter au bon endroit est vital ici.

-gestion des redirections, des pages non-html (NON-OK)

GET marche pas, wget non plus, on a tesé ça tout à l’heure. D’apres Mr Fleury, il y aurai peut-etre un nouveau browser en ligne de commande style Lynx qui permettrait d’arriver à nos fins.

-portabilité totale du code (NON-OK)

A l’heure actuel, mon code est portable sur toutes les machines, à condition de respecter l’arbo du projet, et que le répertoire courant soit programmes/ lorsque vous appelez le script. Il est possible de rendre le projet portable à toutes les machines ET qu’on puisse l’appeller de n’importe où dans l’arborescence de n’importe quelle bécane, mais cela implique d’utiliser la variable d’environnement $0 (implémentée dans bash comme dans perl), de se battre avec une regexp afin de pouvoir récupérer le chemin à partir duquel vous avez call le script, et d’agir en fonction dans les différents path de votre code. (désolé Rachid, j’ai oublié la regexp que tu m’avais si gentiment expliqué, je te resoaulerai pour l’avoir :D)

Un peu lourd en somme. Suffit d’avertir l’utilisateur de bien vérifier d’être au bon endroit:/

– Design (NON-OK)

j’avais commencé à étoffer le tableau esthétiquement, genre mettre une jolie bannière que j’aurai au préalable réalisée sous PHOTOSHOP (c’est toujours bon photoshop pour les design de site, avec son systeme de layout/calque), mais je me suis aperçu que si je devais modifier un truc dans mon script, ca allait foutre tout mon design par terre. Normal me direz-vous, étant donné qu’on gere la création du site en HTML par une boucle, et qu’il est impossible de revenir en arrière dans une boucle…

pas tout à fait impossible en fait en perl (attention, je ne fais pas de propagande pour perl, au contraire même, j’ai justement trouvé un énorme défaut là). Perl permet de sortir d’une boucle et de revenir derriere dans le code, grâce au system des LABEL. Ceux qui ont déjà fait de l’assembleur, c’est exactement la même chose. Vous allez définir un bloque avec un LABEL et y revenir quand vous voulez avec un GOTO. Perl permet une chose similaire, mais le problème c’est que comme en assembleur, cela va TRES vite devenir complètement incomprhénsible pour le commun des mortels. C’est pour cette raison que beaucoup de gens dénigrent Perl, car les scripts deviennent très vite illisibles.

En ce qui concerne les fonts et autre, cela reste possible et facile à réaliser, sans pour autant toucher à la maléabilité du code. C’est encore plus simple en ce qui concerne les regexp, puisqu’en perl vous pouvez stocker les occurences et leur contextes dans des variables…

DIVERS (OK?)

J’ai ajouté d’autres options utiles, comme par exemple le fait de gérer les erreurs lors de la saisie du fichier dans lequel se trouve la liste d’url. Si on tappe un fichier qui existe pas, mon script s’arretera après avoir afficher un truc du genre « fichier introuvable ». Ce n’est pas un billet gagnant pour l’Euromillion certes, mais c’est toujours ça de fait. En perl c’est simple a faire, et ça se résume en 1 demi-ligne.

Voili Voilou, je vais c/p mon code derriere si ça interesse qqn, je le considère « propre », mais il reste difficile d’accès à la lecture, même avec des commentaires.


#!/usr/bin/perl
$i=0;
$j=0;
print « File le nom du fichier url qui se trouve dans le folder LISTES-URL! \n »;
$url=<STDIN>;
print « $url »;
chomp($url);
open(LECTURE, « ../LISTES-URL/$url ») or die »impossible de trouver $url!! `\n »;
print « File le nom du file SANS EXTENSION pour le tableau en html qui sera saved dans le folder programmes/ ffs! \n »;
$my_tab=<STDIN>;
print « $my_tab »;
chomp($my_tab);
open(ECRITURE, « >$my_tab$j.html »);
print ECRITURE « <html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\ »1\ »>\n » ;
while($ligne=<LECTURE>)
{
print $ligne;
chomp($ligne);
print ECRITURE « <tr><td><a href=\ »$ligne\ »>URL$i</a></td> »;
$wgett= »wget -O ../PAGES-ASPIREES/toto$i.html $ligne »;
system($wgett);
if($?==0)
{
print ECRITURE « <td><a href= \ »../PAGES-ASPIREES/toto$i.html\ »>FILE$i</a></td> »;
$lynx= »lynx -dump ../PAGES-ASPIREES/toto$i.html > ../DUMP-TEXT/toto$i.txt »;
system($lynx);
print ECRITURE « <td><a href= \ »../DUMP-TEXT/toto$i.txt\ »>TEXT$i</a></td> »;
$contextfile= »../DUMP-TEXT/toto$i.txt »;
open(CONTEXTE, « $contextfile »);
$i++;
while($lignetxt=<CONTEXTE>)
{
if($lignetxt =~ /barrage/i)
{
$avant = $`;
$apres = $’;
$barrage = $&;
print ECRITURE « <td><i>…$avant<b>$barrage</b>$apres…</i></td></tr> »;
if($i%20==0 || eof(LECTURE))
{
if($j==0)
{
$j++;
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>next</a></align></table></body></html> »;
close(ECRITURE);
open(ECRITURE, « >$my_tab$j.html »);
print ECRITURE « <html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\ »1\ »>\n » ;
}
else
{
$j–;
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>prec</a></align> »;
$j++;
$j++;
if(<LECTURE>)
{
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>…next</a></align> »;
close(ECRITURE);
open(ECRITURE, « >$my_tab$j.html »);
print ECRITURE « <html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\ »1\ »>\n » ;
}

}

}
last;
}

}
}
else
{
close(CONTEXTE);
print ECRITURE « <td>PROBLEME</td> »;
print ECRITURE « <td>PROBLEME</td> »;
print ECRITURE « <td>PROBLEME</td></tr> »;
if($i%20==0 || eof(LECTURE))
{
if($j==0)
{
$j++;
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>next</a></align></table></body></html> »;
close(ECRITURE);
open(ECRITURE, « >$my_tab$j.html »);
print ECRITURE « <html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\ »1\ »>\n » ;
}
else
{
$j–;
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>prec</a></align> »;
$j++;
$j++;
if(<LECTURE>)
{
print ECRITURE « <align=\ »center\ »><a href=\ »$my_tab$j.html\ »>…next</a></align> »;
close(ECRITURE);
open(ECRITURE, « >$my_tab$j.html »);
print ECRITURE « <html>\n<head>\n<title>tableau de liens</title>\n</head><body>\n<table border=\ »1\ »>\n » ;
}

}

}
$i++;
}
}

print ECRITURE « \n</table>\n</body>\n</html> »;
close(LECTURE);
close(ECRITURE);

Cela devient plus gros deja:/ et ce, en ayant ajouté seulement 2, 3 trucs:/

Have fun ceux qui vont essayé de le lire:/