mk-menu-alpha-html

alain Adelmar
                                                                          aadelmar@numericable.fr beuuh c est quoi ca

J'ai écris ce script mk-menu-alpha-html.pl pour mettre un peu d'ordre dans mes pages-perso. Il créé un menu et des listes de fichiers trié par ordre alphabétique. Le principe est très simple, il lit le contenu de votre répertoire de publication (votre site avant de l'envoyer) trie les fichiers alphabétiquement et place leurs noms, sous forme de liens dynamiques dans des listes (liste_a.html, liste_b.html .. liste_z.html) et par la même occasion créé aussi un menu (menu.html) sous forme de cartouche (vous laissant ensuite le soin de le personnaliser comme vous le désiré) il y a la place vue que le cartouche ne fait que quelque centimètres (voir au-dessous).


Usage:

mk-menu-alpha-html.pl [-cpr] [répertoire_de_publication]
        -c complet incorpore aussi les images dans les listes
        -p personnaliser ajouter vos propre paramètres (auteur, adresse_émail, etc...)
        -r pour remd: ajoute quelques lignes explicatives
mk-menu-alpha-html.pl          # pour traiter le répertoire courant (défaut) : 


chose à faire pour l'utiliser

  1. copier le code (vous le trouverai ici), copier le code en le sélectionnant à la souris (texte en rouge)
  2. le coller dans un traitement de texte (de votre choix)
  3. le sauver en l'appelant "mk-menu-alpha-html.pl"
  4. le rendre exécutable:
                a) sur Linux: chmod +X ./mk-menu-alpha-html.pl   
                b) sur Windows (ActivePerl) : perl ./mk-menu-alpha-html.pl ou chmod +X ./mk-menu-alpha-html.pl

Ce qu'il fait:

Il lit le répertoire que vous avez entrer et classe les noms des fichiers par leur première lettre, puis il créé un page menu.html
avec un cartouche auquel chaque lettre correspond à une liste de fichiers commençant par cette même lettre.
Puis il créé toutes les listes (liste_a, liste_b, etc...) et copie les noms des fichiers sous forme de liens dynamique de façon à ce
que vous n’ayez plus qu'à cliquer dessus pour l'ouvrir, tant qu'a faire on y met la date de la dernière modification et le poids, ça coûte rien et ça peut toujours servir et un petit icône le représentant pour faire jolie.
Vue le principe vous pouvez le modifier pour faire le tri sur d'autre critère (exemple: genre) il vous suffit d'entrer un genre sur une ligne
en commentaire dans le header du fichier (par exemple:)
<!-- programmation => Perl => exemple => module -->
ou
<!-- programmation => C => la compilation -->
et d'effectuer le tri sur ce critère et donc faire les liste comme programmation.html, programmation=>Perl,  etc ...

Voilà tout est dit, ci dessous un exemple de cartouche de menu et plus bas un exemple de liste


a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Recherche
   Adelmar Alain  
   aadelmar@numericable.fr
   6 rue de Tunis 33600 Pessac
   http://perso.numericable.fr/aadelmar
   http://perso.numericable.fr/aadelmar
Index du site
Informatique Générale
Plan du Site


Cette page a été créé automatiquement par mk-menu-alpha-html.pl  ainsi que des listes de fichiers classés alphabétiquement (cliquer sur une lettre en haut à gauche) ce script est en ce moment à la version 1.6. La prochaine version ajoutera un classement par type, sujet, comme:

Informatique => langage => script => exemple-commente.html
Informatique => système => configuration => alias.html, commun.html, partitionnement_et_gestion_des_partitions.html, ntfs_linux.html,  etc...
Informatique => système => outils => ver2l.html, colzat.html, refonte.html, tafed.html, etc...
documentation =>


et un exemple de liste:


  ..
Mardi 28 Juin 2011 - 21:38:18

  
a400der1.html
36.512 (K octets) --- Mardi 28 Juin 2011 - 21:38:17

  accent2ascii.pl
5.308 (K octets) --- Mardi 28 Juin 2011 - 21:38:18

  accents2ascii.html
10.217 (K octets) --- Mardi 28 Juin 2011 - 21:38:18

  adel_informatique_gnl.html
19.165 (K octets) --- Mardi 28 Juin 2011 - 21:38:18

  adresse.html
3.643 (K octets) --- Mardi 28 Juin 2011 - 21:38:18

  adresse_lx.html
7.792 (K octets) --- Mardi 28 Juin 2011 - 21:38:18

  aj
15.509 (K octets) --- Jeudi 30 Juin 2011 - 23:01:39

  aj,v
16.35 (K octets) --- Mardi 28 Juin 2011 - 21:38:19

  aj.1
2.397 (K octets) --- Jeudi 30 Juin 2011 - 23:01:39


Le script


#!/usr/bin/perl -w
#!perl -w
# remd: Créera un cartouche menu servant à accéder au fichiers alphabétiquement. Dans un *
# premier temps il enregistre un fichier menu.html qui contiendra ce cartouche puis il   *
# listera le contenu d'un repertoires de publication, classe les fichiers meta en les    *
# sélectionnant alphabétiquement et créé des listes comme :liste_a.html liste_b.html ... *
# (Il y aura plusieurs possibilités de tri sur les versions à venir(par nature)).        *
# Dans ces listes  le noms  des  fichiers apparaitra  sous forme de liens ainsi que leur *
# taille leur date de publication et un petit topo de 2-3 lignes pour les définir (quoi) *
#                                                                                        *
# note: Ce script ne touche pas à votre repertoire de publication il ne fait que lire les*
# noms de fichiers et créé un menu et des listes, sans jamais écraser quoique ce soit.   *
# ---------------------------------------------------------------------------------utf8  *
# écris par Alain Adelmar aadelmar@numericable.fr peut fonctionner sur tout OS (Lx, M$)  *
# Multi environement (Linux, MicroSoft, msys, cygwin)   _   vers:1.5 (26/06/11)          *
# Usage: mk-menu-alpha-html.pl [-c] [repertoire_de_publication]                          *
#          -c complet incorpore aussi les images dans les listes                            *
#          -p personnaliser ajouter vos propre paramètres (auteur, adresse_email, etc...)   *
#          -r pour remd: ajoute quelques lignes explicatives                                *
# mk-menu-alpha-html.pl           pour traiter le repertoire courant (defaut) :          *
# ------------------écrit par alain Adelmar -------------------------------------------  *
# Enjoyed, that's a aadelmar's script, fun free and french  06/2011  "hé, ouai mon pote" *
#----------------------------------------------------------------------------------------*

#use strict;
use warnings;
use Cwd;
my $dir = cwd;
#use File::stat;

# traitement du temps pour date et heure en français
(my $sec,my $min,my $heure,my $mjour,my $mois,my $annee,my $sjour,my $ajour,my $isdst) =  localtime(time);
my @lssjour = qw( Dim Lun Mar Mer Jeu Ven Sam);
my @lssmois = qw ( Janvier Fevrier Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Decembre );

my $french_date_now = "$lssjour[$sjour] $mjour $lssmois[$mois] " . ($annee+=1900) . " - $heure:$min:$sec";

my $fr_date_file = "";      # initialisation de date fichier par &datefile
#my $model = "ctime";     # peut être mis à a pour acces| c pour change | m pour modif
my $mode = 9;

my $vers = '1.5';
my $auteur = "Adelmar Alain";                               # avec l'option -p entrer vos propre coordonnées
my $adresse_mail = 'aadelmar@numericable.fr';
my $adresse_postale = '6 rue de Tunis 33600 Pessac';
my $adresse_pub1 = 'http://perso.numericable.fr/aadelmar';
my $adresse_pub2 = 'http://aadelmar.free.fr/';    #--------a là
my $vide = " " x 30;
my $x ="*-" x 25;
my $tiret = "-" x50;
my $nlr = my $gnus = my $u = my $datenum = 0;
my $al = "\t=== A_l_a_i_n -\/\/- A_d_e_l_m_a_r ===      |";
my $lbl = "$x\n$al\n\t$0:\t$vers\n$x\n\n";
my $lbl_titre = "";        # titre de la page créé (menu ou liste ou rep_)
my $mi = "<hr\>alain Adelmar <a href=\"mailto:aadelmar\@free.fr\"\>aadelmar\@numericable.fr<\/a\>\n";
my $rem = my $reptmp = my $l = my $f = "";
my $argv = my $file = "";
my $d = "";                    # repertoire (de travail) entrer par l'utilisateur
my $rpath_fliste = "";        # adresse reelle des listes
my @ls_rpath_fliste = "";     # liste des fichier créés dans la session en vue de créer le footer
my @contenu = my @remd = "";
my $fr_datenum_file= "";
my $line = my $filename = my $filelbl = "";
my $cj = my $ptaille = my $format_d = "";
my $taille = 0;
my $fout = "";
my $fout_dat = my $fliste = my $lettre = "";
my $menu_debut = "&nbsp;" . '<table BORDER COLS=3 WIDTH="100%" >'
  . "<tr\>\n<td\><a NAME=\"menu_top\"\>" . '</a><table BORDER COLS=7 WIDTH="100%" >'
  . "\n<tr\>\n";
my $z = "";
my $vierge = 0;
my $commentaire = '<!-- ne pas bouger ce commentaire, svp -->';
my $pied = '  <!-- pied de page -->';
my $ford = "";
my @nwcontenu = "";


if (@ARGV) {
  if($ARGV[0] =~ /^-/) {
    s/-//;
    $argv = $ARGV[0];
    print "argv vaut $argv\n";
    $d = $ARGV[1];
    print "$x\n$al\n\n$x\n\n";
  }
  else {
    $d = $ARGV[0];
    print "$x\n$al\n\n$x\n\n";
  }
}
else {
  print "usage: rep2html [répértoire] \n";
  print "Indiquez le dossier a traiter:\n";
  chomp($d = <STDIN>);
}

#-------traiter les paramêtres utilisateur----
if($argv =~ /p/) {
  # le nom prenom
  print "veuillez entrer votre [nom prenom] pour indiquer l'auteur des pages\n";
  $auteur = <STDIN>;
  chomp $auteur;
  # l'adresse email
  print "veuillez entrer votre [adresse email] comme toto\@lala.fr pour renseigner la page menu\n";
  $adresse_mail = <STDIN>;
  chomp $adresse_mail;
  # l'adresse postale
  print "veuillez entrer votre [adresse postale] comme \"6 rue bubu 45000 Tralala Grosland\""
    . "pour renseigner la page menu\n";
  my $adresse_postale = <STDIN>;
  chomp $adresse_postale;
  # l'adresse de votre premier site de publication, (page perso, blog)
  print "veuillez entrer votre [adresse de publication] principale comme \n"
    . "http://aadelmar.free.fr/ pour renseigner la page menu\n";
  my $adresse_pub1 = <STDIN>;
  chomp $adresse_pub1;
  # l'adresse de votre second site de publication, (page perso, blog)
  print "veuillez entrer votre seconde [adresse de publication] comme \n"
    . "http://aadelmar.free.fr/ pour renseigner la page menu\n";
  my $adresse_pub2 = <STDIN>;
  chomp $adresse_pub2;
}


format STDOUT_TOP =
Page @<<
$%

 Fichier                       Taille (oc)      Date du dernier changement
=======================      ==============    ===========================
.


if ($d eq "") {
  $d = $dir;
}
else {
  unless (-d $d) {
    print "Entrez un chemin de fichier valide:\n";
    $d = <STDIN>;
    chomp $d;
  }
}

if ($^O=~ /[msys|cygwin|gnu]$/) {
  $gnus++;
  print "this is a real gnu OS, congratulation\n";
}
elsif ($ENV{"PATH"}=~ /^\//) {
  $gnus++;
  print "this is a real gnu OS, congratulation\n";
}

my @gnul = ("\\", "\/");
my $slash = $gnul[$gnus];
my @ds = split(/$slash/, $d);
my $ds = pop @ds;

my $ext_html = ".html";
my $ext_dat = ".dat";
$fout = "rep_" . "$ds$ext_html";
&gnotise($fout);
$fout_dat = "rep_" . "$ds$ext_dat";
&gnotise($fout_dat);

open OUT, ">$fout" or die "Ouverture du fichier rep impossible $!";
$lbl_titre = "liste d&eacute;taill&eacute; de $d";
&header("OUT");
print OUT "<h1\>Liste des fichiers de $d<\/h1\><br>\n";
print OUT "Edit&eacute; automatiquement par le script $0 vers:$vers d\'Adelmar Alain le: "
  . $french_date_now . "\nn\'eff&eacute;ctuez pas de modifications (SVP)\.\n<hr\>\n";


open OUTDAT, ">$fout_dat" or die "Screugneugneu $fout_dat ne veux pas souvrir $!";
print OUTDAT "Edité automatiquement par le script $0 le: $french_date_now\nn\'"
  . "efféctuez pas de modifications (SVP)\.\n";

my $menu = "$d$slash" . "menu.html";
unless (-e $menu) {
  open MENU, ">$menu" or die "Ouverture de $menu impossible $!";
  # création du cartouche
  # entete
  $lbl_titre = "menu alphabetique et par genre du site";
  &header("MENU");
  &onglet_menu("MENU");
 
  print MENU '  <table BORDER COLS=3 WIDTH="100%" STYLE="background-image: url(bkgnd15.gif)">' . "\n";
  print MENU '  <tr>' . "\n";
  print MENU '  <td><a NAME="menu_top"></a>' . "\n";
  print MENU '  <table BORDER COLS=7 WIDTH="100%" >' . "\n";
  print MENU '  <tr>' . "\n";
 
  # mettre boucle de a-z
  my $renvoi = 0;
  my @az = ("a".."z");
  foreach (@az) {
    if($renvoi <= 6) {
      print MENU '    <td><font face="Georgia" size=+1><a href="liste_'
    . $_ . '.html#a_top"><center>' . $_ . '</center></a></font></td>'
      . "\n";
      $renvoi++;
    }
    else {
      print MENU '    </tr>' . "\n\n\t" . '  <tr>' . "\n";
      $renvoi = 0;
      print MENU '    <td><font face="Georgia" size=+1><a href="liste_'
    . $_ . '.html#a_top"><center>' . $_ . '</center></a></font></td>' . "\n";
    }
  }
  print MENU '    </tr>' . "\n\n\t" . '  </table>' . "\n\n";
  print MENU '  <center><a NAME="recherche"></a><FONT COLOR="#FF0000"><a href="recherche.html">'
    . 'Recherche</a></FONT></center>' . "\n"; 
  print MENU '  </td>' . "\n\n" . '  <td>' . "\n\n";
  print MENU '  <center><img SRC="al_sigle_5.gif" height=107 width=117></center>' . "\n";
  print MENU '  </td>' . "\n";
  print MENU '  <td>&nbsp;&nbsp;  ' . $auteur . '&nbsp;&nbsp;' . "\n";
  print MENU '  <br>&nbsp;&nbsp;  <a href="' . $adresse_mail . '">' . $adresse_mail . '</a>' . "\n";
  print MENU '  <br>&nbsp;&nbsp;  ' . $adresse_postale . "\n";
  print MENU '  <br>&nbsp;&nbsp;  <a href="' . $adresse_pub1 . '">' . $adresse_pub1 . '</a>' . "\n";
  print MENU '  <br>&nbsp;&nbsp;  <a href="' . $adresse_pub1 . '">' . $adresse_pub1 . '</a></td>' . "\n";
  print MENU '  </tr>' . "\n" . '  <tr>' . "\n" . '  <td>' . "\n";
  print MENU '  <center><a NAME="_top"></a><a href="index.html">Index du site</a></center>' . "\n";
  print MENU '  </td>' . "\n\n" . '  <td>' . "\n";
  print MENU '  <center><a NAME="informgnl_tab"></a><a href="informatique_gnl.html">'
    . 'Informatique G&eacute;n&eacute;rale</a></center>' . "\n";
  print MENU '  </td>' . "\n\n" . '  <td>' . "\n";
  print MENU '  <center><a NAME="plan_site_tab"></a>Plan du Site</center>' . "\n";
  print MENU '  </td>' . "\n" . '  </tr>' . "\n" . '  </table>' . "\n";
  print MENU '  <!-- script ecrit par Adelmar Alain aadelmar@numericable.fr -->' . "\n";
  print MENU '  <dl>' . "\n";
 
  close MENU or die "Fermeture de $file impossible $!";
}

#--------------------------------------------------------------------a la


opendir R, "$d" or die "Ouverture repertoire impossible $!";
$mode = 8;

foreach $file (sort readdir R){
  next if ($file =~ /^\./);
  $filelbl = $filename = $file;
 
  # print "filename vaut $filename\n";
  $file ="$d$slash$filename";
  # print "file vaut $file\n";
  $u++;
  our $format_d = 4;
  $fr_date_file = datefinefile($file, $mode, $format_d);
 
  $fr_date_file = datefinefile($file);
 
  if(-d $file) {
    my $reptmp = "d";
    &ecrit_d("OUT");
    #------------------------
    $lettre= substr($filename,0,1);   
    if($lettre=~ /\d/) {
      $lettre = "0-9";
    }
    elsif($lettre=~ /\w/) {
      $lettre= lc $lettre;
    }
    $fliste = "liste_$lettre.html";
    # $rpath_fliste = adresse réelle de $fliste
    # tant qu'a faire placer les liste dans le rep voulu
    $rpath_fliste = "$d$slash$fliste";
    $ford = "d";
    if(&jette_un_oeil($rpath_fliste, $ford)== 1) {
      if($vierge == 1) {
    &ecrit_d("FL");
    print FL $commentaire;
    &footer("FL");
    close FL || die "Fermeture de $fliste impossible $!";
    $vierge = 0;
      }
      else {
    close FL || die "impossible a $rpath_fliste de se fermer $!";
    open FL, ">$rpath_fliste" or die "Ouverture de $fliste impossible $!";
    print FL "@nwcontenu\n";
    close FL || die "Fermeture de $fliste impossible $!";
      }
    }
   
    #--------------------------
    write;
    print OUTDAT "$reptmp $line";
  }
  elsif(-f $file) {
    #damned avec remd: je pourrai carrement afficher le commentaire à coté du liens (but no alias sur M$)
    $reptmp = "f";
    $taille = (stat($file))[7];
    if ($taille >= 1000000) {
      $taille = $taille/1000000;
      $ptaille = "$taille (Mo)";
    }
    elsif ($taille >= 1000) {
      $taille = $taille/1000;
      $ptaille = "$taille (Koctets)";
    }
    else {
      $ptaille = "$taille (Octets)";
    }
    &ecrit_f("OUT");
    # ajout dans les listes des noms de fichier (qui controle l'existance fichier et nom de fichier)-----
    unless($argv=~ /^c/) {
      next if($filename=~ /\.gif$|jpe?g$|png$/i);
    }
    $lettre= substr($filename,0,1);   
    if($lettre=~ /\d/) {
      $lettre = "0-9";
    }
    elsif($lettre=~ /\w/) {
      $lettre= lc $lettre;
    }
    $fliste = "liste_$lettre.html";
    # $rpath_fliste = adresse réelle de $fliste
    # tant qu'a faire placer les liste dans le rep voulu
    $rpath_fliste = "$d$slash$fliste";
    $ford = "f";
    if(&jette_un_oeil($rpath_fliste, $ford)== 1) {
      if($vierge == 1) {
    &ecrit_d("FL");
    print FL $commentaire;
    &footer("FL");
    close FL || die "Fermeture de $fliste impossible $!";
    $vierge = 0;
      }
      else {
    close FL || die "impossible a $rpath_fliste de se fermer $!";
    open FL, ">$rpath_fliste" or die "Ouverture de $fliste impossible $!";
    print FL "@nwcontenu\n";
    close FL || die "Fermeture de $fliste impossible $!";
      }
    }
    #------------------------------------------------------------------------------------------------------
    write;
    $line = ":$filename\n\t$ptaille\t$fr_date_file\n";
    if ($argv eq "c") {
      $rem = &remdthat($filename);
      print OUTDAT "$reptmp $line\n$rem\n";
    }
    print OUTDAT "$reptmp $line";
  }
}    
#closedir R or die "Fermeture du repertoire impossible $!";

print OUTDAT "\n$lbl\n";
close OUTDAT || die "Comme dirai tonton jo, Fartoi encoula granda connasse, "
  . "30000 fois saloperie ce ptain de $fout_dat ne veut pas ce fermer $!";
&onglet_menu("OUT");
print OUT '<!-- script Perl d\'alain Adelmar -->' . "\n";
&footer("OUT");
close OUT or die "Fermeture impossible bordel $!";

print "nombre de fichier traite $u\n";
print "\n\nUn fichier $fout a été créé ainsi qu'un fichier $fout_dat\nBonne journée\nalain\n";

sub gnotise() {
  my($fili)= @_;
 
  $fili = "$dir$slash$fili";
  my $i = 0;
  while (-e $fili) {
    if($fili =~ /html$/) {
      $fili = "$dir$slash" . "rep_" . "$ds" . "_$i" . "$ext_html";
      $fout = $fili;
    }
    elsif($fili =~ /dat$/) {
      $fili = "$dir$slash" . "rep_" . "$ds" . "_$i" . "$ext_dat";
      $fout_dat = $fili;
    }
    # a saquer quand ok------------------------------------------------------------------------de là
    else {
      print "\nProblème de fichier de sortie erreur dans gnotise\nnom du fichier de sortie: $fili\n";
    }
    #---------------------------------------------------------------------------a là
    $i++;
    # a saquer quand ok-------------------------------------------------------------------------de là
    #my $arch = "$fili" . "~";
    #rename $fili, $arch or die "impossible de faire comme cela $!";
    #--------------------------------------------------------------------------a là
  }
}

# donne la date et heure sous plusieurs format Français et numerique--------------------------------------
sub datefinefile {
  my ($file)= @_;
 
  my $formad_d = 4;
  our @lssjour = qw( Dim Lun Mar Mer Jeu Ven Sam);
  our @lslsjour = qw( Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi);
  our @lssmois = qw(Janvier Fevrier Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Decembre);
  my $datenum = ((stat($file))[$mode]);
  (my $sec,my $min,my $heure,my $mjour,my $mois,my $annee,my $sjour,my $ajour,my $isdst)=localtime($datenum);
 
  my $pa = "";
  my $num_mois = ($mois+1);
  if ($mois <= 9) {
    $num_mois = "0$num_mois";
  }
  if ($mjour <= 9) {
    $mjour = "0" . "$mjour";
  }
  if ($heure <= 9) {
    $heure = "0" . "$heure";
  }
  if ($min <= 9) {
    $min = "0" . "$min";
  }
  if ($sec <= 9) {
    $sec = "0" . "$sec";
  }
  $cj = $lssjour[$sjour];
  my $pj = substr($cj, 0, 2);
  my $pm = substr("$lssmois[$mois]", 0 , 3);
  if ($annee < 100) {
    my $pa = $annee;
  }
  elsif ($annee <=109) {
    my $pa = "0" . ($annee-100);
  }
  else {
    my $pa = ($annee-100);
  }
  if ($format_d eq "1") {
    # format differants 1: 20100131-203001
    $fr_date_file = ($annee+=1900) . "$num_mois$mjour-$heure$min$sec";
  }
  elsif ($format_d eq "2") {
    # format differants 2: 31/01/2010-20:30
    $fr_date_file = "$mjour\/$num_mois\/" . ($annee+=1900) . "-$heure:$min";
  }
  elsif ($format_d eq "3") {
    # format differants 2:  Di-31/01/2010-20:30:02
    $fr_date_file = "$pj-$mjour\/$num_mois\/" . ($annee+=1900) . "-$heure:$min:$sec";
  }
  elsif ($format_d eq "4") {
    # format differants: $fr_dt_file = 31Jan10-20h
    $fr_date_file = "$mjour$pm" . "$pa" . "-$heure" . "h";
  }
  elsif ($format_d eq "5") {
    # format differants: $fr_dt_file = Di 31 Jan 10 - 20h30
    $fr_date_file = "$pj $mjour $pm" . " $pa" . "- $heure" . "h$min";
  }
  else {
    # format differants: $fr_date_file = Dim 31 Janvier 2010 - 20:30:02
    $fr_date_file = "$lslsjour[$sjour] $mjour $lssmois[$mois] " . ($annee+=1900) . " - $heure:$min:$sec";
  }
  return $fr_date_file;
}
#--------------------------------------------------------------------------------------------------------


sub remdthat {
  my ($filename)= @_;
  (@contenu, @remd)= "";
  my $filnm = "$d$slash$filename";
 
  open FREM, "<$filnm" or die "Ouverture de $file impossible $!";
  @contenu = <FREM>;
  $nlr = 0;
  foreach $l(@contenu) {
    if ($nlr >= 1) {
      chomp $l;
      push @remd, $l;
      goto LABELLE if ($nlr == 1);
      $nlr--;
    }
    elsif ($l =~ /remd:/) {
      chomp $l;
      if(length $l <=150) {
    push @remd, $l;
    print "ok pour $l\n";
      }
      else {
    print "ligne trop longue\n";
      }
      $nlr = 5;       # nombre de lignes de commantaires +1, changer le nombres ici
    }
  }
 LABELLE:close FREM || die "Fermeture de $file compromise $!";
  $rem = join("\n\t", @remd);
  return $rem;
}


sub jette_un_oeil {
  my ($rpath_fliste, $ford)=@_;
 
  @nwcontenu= "";
  if(-e $rpath_fliste) {
    open FL, "$rpath_fliste" or die "Ouverture de $fliste impossible $!";
    @contenu = <FL>;
    #close FL || die "Fermeture de $fliste impossible $!";
    foreach (@contenu) {
      chomp;
      if(/$filename/) {
    close FL || die "Fermeture de $rpath_fliste impossible $!";
    return 0;
      }
      elsif(/$commentaire/) {
    if($ford eq "d") {
      push @nwcontenu, "<img SRC=\"folder.jpg\"\>&nbsp;&nbsp;<b\><a href=\"$filename\"\>"
        . "$file<\/a\><\/b\><br\><div align=center\>$fr_date_file<\/div\><br\>\n";
    }
    else {
      push @nwcontenu, "<img SRC=\"file.jpg\"\>&nbsp;&nbsp;<a href=\"$filename\"\>$filename"
        . "<\/a\><br\><div align=center\>$ptaille --- $fr_date_file<\/div\><br\>\n";
    }
    push @nwcontenu, "$commentaire\n";
      }
      elsif(/<\/html\>/) {
    push @nwcontenu, "$_\n";
    return 1;
      }
      else {
    push @nwcontenu, "$_\n";
      }
    }
  }
  else {
    my $fileliste = "$d$slash$fliste";
   
    open FL, ">>$rpath_fliste" or die "Ouverture de $fileliste impossible $!";
    $lbl_titre = "Liste des fichiers commencant par &lt;" . $lettre . "&gt;";
    &header("FL");
    &onglet_menu("FL");
    print FL "<h1\>Liste des fichiers commencant par &lt;" . $lettre . '&gt;' . "<\/h1\><br>\n";
    print FL "Edit&eacute; automatiquement par le script $0 vers:$vers le: " . $french_date_now
      . "\nn\'eff&eacute;ctuez pas de modifications (SVP)\.\n<hr\>\n";
    $vierge = 1;
    return 1;
  }
}


closedir R or die "Fermeture du repertoire impossible $!";

sub onglet_menu() {
  my ($handel)= @_;
 
  print $handel '  <ul>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="base_conaissances_perso.html">'
    . 'Pr&eacute;c&eacute;dant</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="liste_a.html">Suivant</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="index.html">Index</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="menu.html#menu_top">Menu</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="mailto:' . $adresse_mail . '">'
    . 'Me Joindre</a></li>' . "\n";
  print $handel '  </ul>' . "\n";
  print $handel '  <hr>' . "\n";
}

sub header() {
  my ($handel)= @_;
 
  print $handel '<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">' . "\n";
  print $handel '  <html>' . "\n";
  print $handel '    <head>' . "\n";
  print $handel '      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">' . "\n";
  print $handel '      <title>' . $lbl_titre . '</title>' . "\n";
  print $handel '      <meta name="Author" content="' . $auteur . '">' . "\n";
  print $handel '      <meta name="GENERATOR" content="Mozilla/4.7 [fr] (Linux) [Netscape]">' . "\n";
  print $handel '      <link href="style.css" type="text/css" rel="stylesheet">' . "\n";
  print $handel '  </head>' . "\n";
  print $handel '  <body>' . "\n";
}

sub ecrit_d() {
  my ($handel)= @_;
 
  print $handel "<img SRC=\"folder.jpg\"\>&nbsp;&nbsp;<b\><a href=\"$filename\"\>$file"
    . "<\/a\><\/b\><br\><div align=center\>$fr_date_file<\/div\><br\>\n";
}

sub ecrit_f() {
  my ($handel)= @_;
 
  print $handel "<img SRC=\"file.jpg\"\>&nbsp;&nbsp;<a href=\"$filename\"\>$filename<\/a\>"
    . "<br\><div align=center\>$ptaille --- $fr_date_file<\/div\><br\>\n";   
}

sub footer() {
  my ($handel)= @_;
 
  print $handel "$pied\n";   
  print $handel '  <ul>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="base_conaissances_perso.html">'
    . 'Pr&eacute;c&eacute;dant</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="liste_a.html">Suivant</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="index.html">Index</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="menu.html#menu_top">Menu</a></li>' . "\n";
  print $handel '  <li class="mu"><a class="neolink" href="mailto:' . $adresse_mail . '">Me Joindre'
    . '</a></li>' . "\n";
  print $handel '  </ul>' . "\n";
  print $handel '  <hr>' . "\n";
  print $handel '  </body>' . "\n" . "</html\>\n";
}


format STDOUT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   @<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<
$filelbl, $ptaille, $fr_date_file
.



END;