perl2html.pl

#!/usr/bin/perl
use locale; #caracteres accentues
#On lance comme cela: perl perl2html.pl
#On obtient: fichier.pl.html
print "Bienvenu(e) au programme qui permet \n d'afficher les programmes perl en HTML.\n";
print "Nom du fichier de travail, de preference un .pl \n au format UNIX: \n";
my $file=<STDIN>;
chomp($file);
open(FILEIN, $file);
open(FILEOUT, ">$file.html");
my $DUMPFULL="";
while(my $recup=<FILEIN>) {
#1. transcodage
##Les non métacaractères##
$recup=~s/&/&amp;/g;
####Les métacaractères####
$recup=~s/\>/&gt;/g;
$recup=~s/\</&lt;/g;
$recup=~s/\"/&quot;/g;
####Les Accents####
$recup=~s/à/&agrave;/g;
$recup=~s/á/&aacute;/g;
$recup=~s/â/&acirc;/g;
$recup=~s/ã/&atilde;/g;
$recup=~s/ä/&auml;/g;
$recup=~s/å/&aring;/g;
$recup=~s/æ/&aelig;/g;
$recup=~s/è/&egrave;/g;
$recup=~s/é/&eacute;/g;
$recup=~s/ê/&ecirc;/g;
$recup=~s/ë/&euml;/g;
$recup=~s/è/&egrave;/g;
$recup=~s/é/&eacute;/g;
$recup=~s/ê/&ecirc;/g;
$recup=~s/ë/&euml;/g;
$recup=~s/ì/&igrave;/g;
$recup=~s/í/&iacute;/g;
$recup=~s/î/&icirc;/g;
$recup=~s/ï/&iuml;/g;
$recup=~s/ò/&ograve;/g;
$recup=~s/ó/&oacute;/g;
$recup=~s/ô/&ocirc;/g;
$recup=~s/õ/&otilde;/g;
$recup=~s/ö/&ouml;/g;
$recup=~s/ù/&ugrave;/g;
$recup=~s/ú/&uacute;/g;
$recup=~s/û/&ucirc;/g;
$recup=~s/ü/&uuml;/g;
$recup=~s/ç/&ccedil;/g;
$recup=~s/¯/&macr;/g;
$recup=~s/\/<img src="\.\/IMAGES\/ETX.jpg">/g;
$recup=~s/\/<img src="\.\/IMAGES\/DC1.jpg">/g;
####Les fichiers de type programme en Perl####
##Les paragraphes et les line breaks##
$recup=~s/(\s)*\n/\n/g; #supprime les espaces avant le retour à la ligne
$recup=~s/^\n/<p>\n/g; #met des paragraphes dans tous les sauts de ligne
if ($recup=~/[^<p>]\n/g) {
$recup=~s/\n/<\/br>\n/g;
};# met des br en fin de ligne lorsque la balise <p> n'est pas là
##Les commentaires##
$recup=~s/\#\!\/usr\/bin\/perl/<font color="green">\#\!\/usr\/bin\/perl<\/font>/g; # met du vert dans la déclaration de type de fichier
$recup=~s/\#\!\/bin\/bash/<font color="red">\#\!\/bin\/bash<\/font>/g;
$recup=~s/#caracteres accentues/<font color="green">\#caracteres accentues<\/font>/g; # met du vert dans la phrase caracteres accentues
if ($recup=~/^\#/g) {
$recup=~s/$recup/<font color="green">$recup<\/font>/g;
$recup=~s/<\/br>\n<\/font>/<\/font><\/br>\n/g; #Résidus
}; # met du vert à chaque commentaire en début de ligne
unless(($recup=~/^<font color="green">/)||($recup=~/<font color="green">/)) {
if ($recup=~/[^\\]\#/g){
$recup=~s/\#/<font color="green">\#<\/font>/g;
}; # on ne peut pas faire mieux car les espaces et les barres obliques sont considérés comme des espaces<\/font>/g
};

$recup=~s/<font color="green">\#<\/font><font color="green">\#<\/font>/<font color="green">\#\#<\/font>/g;
$recup=~s/\#<\/font><font color="green">\#/\#\#/g;

##Les variables par ordre alphabétique##

$recup=~s/\$treetagger/<font color="orange">\$treetagger<\/font>/g;
$recup=~s/\$tete/<font color="orange">\$tete<\/font>/g;
$recup=~s/\$sequence/<font color="orange">\$sequence<\/font>/g;
$recup=~s/\$rubrique/<font color="orange">\$rubrique<\/font>/g;
$recup=~s/\$reponse/<font color="orange">\$reponse<\/font>/g;
unless ($recup=~/<font color="orange">\$rep<\/font>/) {
$recup=~s/\$rep/<font color="orange">\$rep<\/font>/g;
};

$recup=~s/\$recupxsl/<font color="orange">\$recupxsl<\/font>/g;
unless($recup=~/<font color="orange">\$recup<\/font>/){
$recup=~s/\$recup/<font color="orange">\$recup<\/font>/g;
};
$recup=~s/\$racine/<font color="orange">\$racine<\/font>/g;
$recup=~s/\$queue/<font color="orange">\$queue<\/font>/g;
$recup=~s/\$patron/<font color="orange">\$patron<\/font>/g;
$recup=~s/\$path/<font color="orange">\$path<\/font>/g;
unless ($recup=~/<font color="orange">\$p/){
$recup=~s/\$p/<font color="orange">\$p<\/font>/g;
};
$recup=~s/\$output/<font color="orange">\$output<\/font>/g;
$recup=~s/\$num/<font color="orange">\$num<\/font>/g;
$recup=~s/\$name/<font color="orange">\$name<\/font>/g;
$recup=~s/\$nextligne/<font color="orange">\$nextligne<\/font>/g;
$recup=~s/\$longueur/<font color="orange">\$longueur<\/font>/g;
$recup=~s/\$Ligne/<font color="orange">\$Ligne<\/font>/g;
$recup=~s/\$ligne/<font color="orange">\$ligne<\/font>/g;
unless ($recup=~/<font color="orange">\$k/){
$recup=~s/\$k/<font color="orange">\$k<\/font>/g;
};
unless ($recup=~/<font color="orange">\$j/){
$recup=~s/\$j/<font color="orange">\$j<\/font>/g;
};
unless ($recup=~/<font color="orange">\$i/){
$recup=~s/\$i/<font color="orange">\$i<\/font>/g;
};
$recup=~s/\$forme/<font color="orange">\$forme<\/font>/g;
$recup=~s/\$FichierSortie/<font color="orange">\$FichierSortie<\/font>/g;
$recup=~s/\$FichierEntree/<font color="orange">\$FichierEntree<\/font>/g;
$recup=~s/\$file3p3/<font color="orange">\$file3p3<\/font>/g;
$recup=~s/\$file3p2/<font color="orange">\$file3p2<\/font>/g;
$recup=~s/\$file3p1/<font color="orange">\$file3p1<\/font>/g;
$recup=~s/\$file2p3/<font color="orange">\$file2p3<\/font>/g;
$recup=~s/\$file2p2/<font color="orange">\$file2p2<\/font>/g;
$recup=~s/\$file2p1/<font color="orange">\$file2p1<\/font>/g;
$recup=~s/\$file1p3/<font color="orange">\$file1p3<\/font>/g;
$recup=~s/\$file1p2/<font color="orange">\$file1p2<\/font>/g;
$recup=~s/\$file1p1/<font color="orange">\$file1p1<\/font>/g;
unless($recup=~/<font color="orange">\$file/) {
$recup=~s/\$file/<font color="orange">\$file<\/font>/g;
};
$recup=~s/\$DUMPFULLtxt/<font color="orange">\$DUMPFULLtxt<\/font>/g;
unless($recup=~/<font color="orange">\$DUMPFULL/) {
$recup=~s/\$DUMPFULL/<font color="orange">\$DUMPFULL<\/font>/g;
};
$recup=~s/\$deux/<font color="orange">\$deux<\/font>/g;
$recup=~s/\$decoupeligne/<font color="orange">\$decoupeligne<\/font>/g;
unless($recup=~/<font color="orange">\$d/) {
$recup=~s/\$d/<font color="orange">\$d<\/font>/g;
};
$recup=~s/\$compare/<font color="orange">\$compare<\/font>/g;
$recup=~s/\$ChaineUsage/<font color="orange">\$ChaineUsage<\/font>/g;
unless($recup=~/<font color="orange">\$c/) {
$recup=~s/\$c/<font color="orange">\$c<\/font>/g;
};
unless($recup=~/<font color="orange">\$b/) {
$recup=~s/\$b/<font color="orange">\$b<\/font>/g;
};
$recup=~s/\$ARGV/<font color="pink">\$ARGV<\/font>/g;
$recup=~s/\$avant/<font color="orange">\$avant<\/font>/g;
$recup=~s/\$apres/<font color="orange">\$apres<\/font>/g;
unless($recup=~/<font color="orange">\$a/) {
$recup=~s/\$a/<font color="orange">\$a<\/font>/g;
};
$recup=~s/\$4/<font color="orange">\$4<\/font>/g;
$recup=~s/\$3/<font color="orange">\$3<\/font>/g;
$recup=~s/\$2/<font color="orange">\$2<\/font>/g;
$recup=~s/\$1/<font color="orange">\$1<\/font>/g;
unless (($recup=~/<font color="orange">\$/)||($recup=~/<font color="pink">\$/)){
$recup=~s/\$/<font color="orange">\$<\/font>/g;
};

##Les numéros##
$recup=~s/<\/font>0/0<\/font>/g; $recup=~s/<\/font>1/1<\/font>/g; $recup=~s/<\/font>2/2<\/font>/g;
$recup=~s/<\/font>3/3<\/font>/g; $recup=~s/<\/font>4/4<\/font>/g; $recup=~s/<\/font>5/5<\/font>/g;
$recup=~s/<\/font>6/6<\/font>/g; $recup=~s/<\/font>7/7<\/font>/g; $recup=~s/<\/font>8/8<\/font>/g;
$recup=~s/<\/font>9/9<\/font>/g;
$recup=~s/<\/font>0/0<\/font>/g; $recup=~s/<\/font>1/1<\/font>/g; $recup=~s/<\/font>2/2<\/font>/g;
$recup=~s/<\/font>3/3<\/font>/g; $recup=~s/<\/font>4/4<\/font>/g; $recup=~s/<\/font>5/5<\/font>/g;
$recup=~s/<\/font>6/6<\/font>/g; $recup=~s/<\/font>7/7<\/font>/g; $recup=~s/<\/font>8/8<\/font>/g;
$recup=~s/<\/font>9/9<\/font>/g;
$recup=~s/<\/font>0/0<\/font>/g; $recup=~s/<\/font>1/1<\/font>/g; $recup=~s/<\/font>2/2<\/font>/g;
$recup=~s/<\/font>3/3<\/font>/g; $recup=~s/<\/font>4/4<\/font>/g; $recup=~s/<\/font>5/5<\/font>/g;
$recup=~s/<\/font>6/6<\/font>/g; $recup=~s/<\/font>7/7<\/font>/g; $recup=~s/<\/font>8/8<\/font>/g;
$recup=~s/<\/font>9/9<\/font>/g;
$recup=~s/<\/font>0/0<\/font>/g; $recup=~s/<\/font>1/1<\/font>/g; $recup=~s/<\/font>2/2<\/font>/g;
$recup=~s/<\/font>3/3<\/font>/g; $recup=~s/<\/font>4/4<\/font>/g; $recup=~s/<\/font>5/5<\/font>/g;
$recup=~s/<\/font>6/6<\/font>/g; $recup=~s/<\/font>7/7<\/font>/g; $recup=~s/<\/font>8/8<\/font>/g;
$recup=~s/<\/font>9/9<\/font>/g;
##Les commandes Perl par ordre alphabétique##
$recup=~s/\while/<font color="blue">\while<\/font>/g;
$recup=~s/use locale/<font color="blue">use locale<\/font>/g;
$recup=~s/unless/<font color="blue">unless<\/font>/g;
$recup=~s/sub /<font color="blue">sub <\/font>/g;
$recup=~s/system/<font color="blue">system<\/font>/g;
$recup=~s/readdir/<font color="blue">readdir<\/font>/g;
$recup=~s/print/<font color="blue">print<\/font>/g;
$recup=~s/\opendir/<font color="blue">\opendir<\/font>/g;
$recup=~s/\open/<font color="blue">\open<\/font>/g;
unless($recup=~/<font color="orange">\$next/) {
$recup=~s/next/<font color="blue">next<\/font>/g;
};
$recup=~s/\my/<font color="blue">\my<\/font>/g;
if (($recup=~/[^a-z]\if/)||($recup=~/[^A-Z]\if/)){
$recup=~s/\if /<font color="blue">\if <\/font>/g;
}; #on inclut l'espace avant la condition en n'excluant que les caractères alphabétiques
$recup=~s/^\if/<font color="blue">\if<\/font>/g; # la condition en début de ligne n'a pas été prise en compte
$recup=~s/foreach/<font color="blue">foreach<\/font>/g;
unless($recup=~/exit.txt/){
$recup=~s/exit/<font color="blue">exit<\/font>/g;
};
$recup=~s/elsif/<font color="blue">elsif<\/font>/g;
$recup=~s/else/<font color="blue">else<\/font>/g;
$recup=~s/die/<font color="blue">die<\/font>/g;
$recup=~s/chomp/<font color="blue">chomp<\/font>/g;
$recup=~s/closedir/<font color="blue">closedir<\/font>/g;
$recup=~s/close/<font color="blue">close<\/font>/g;
$recup=~s/\{/<font color="darkred">\{<\/font>/g;
$recup=~s/\}/<font color="darkred">\}<\/font>/g;
$recup=~s/\@token/<font color="pink">\@token<\/font>/g;
$recup=~s/\@pos/<font color="pink">\@pos<\/font>/g;
$recup=~s/\@lignes/<font color="pink">\@lignes<\/font>/g;
$recup=~s/\@lemme/<font color="pink">\@lemme<\/font>/g;
$recup=~s/\@files/<font color="pink">\@files<\/font>/g;
$recup=~s/\@decoupeligne/<font color="pink">\@decoupeligne<\/font>/g;
$recup=~s/\@ARGV/<font color="pink">\@ARGV<\/font>/g;
$recup=~s/\@_/<font color="pink">\@_<\/font>/g;
unless ($recup=~/<font color="pink">\@/){
$recup=~s/\@/<font color="pink">\@<\/font>/g;
};
$recup=~s/\(/<font color="blue">\(<\/font>/g;
$recup=~s/\)/<font color="blue">\)<\/font>/g;

#Les commandes Bash par ordre alphabétique
$recup=~s/sed /<font color="#D24513">sed <\/font>/g;
$recup=~s/rm /<font color="#D24513">rm <\/font>/g;
$recup=~s/rename /<font color="#D24513">rename <\/font>/g;
$recup=~s/ls /<font color="#D24513">ls <\/font>/g;
$recup=~s/grep /<font color="#D24513">grep <\/font>/g;
$recup=~s/echo /<font color="#D24513">echo <\/font>/g;
$recup=~s/cp /<font color="#D24513">cp <\/font>/g;
$recup=~s/cat /<font color="#D24513">cat <\/font>/g;
#Résidus
$recup=~s/par recup\n/par recup<\/br>\n/g;
if (($recup=~/^\#perl/)||($recup=~/^\#Dans/)) {
$recup=~s/\#/<font color="green">\#<\/font>/g;
};
$recup=~s/adject<font color="blue">if <\/font>/adjectif /g;
$recup=~s/els<font color="blue">if <\/font>/<font color="blue">elsif <\/font>/g;
#2. Memorisation dans DUMPFULL
$DUMPFULL.=$recup;
}
#3. En-tete
print FILEOUT "<html>\n
<head>\n
<title>Les rubriques Culture et Livres sur lemonde.fr<\/title>\n
<meta http-equiv=\"content-type\" content=\"text\/html; charset=windows-1250\">\n
<\/head>\n
<body bgcolor=\"\#5EC3FB\" text=\"\#12162E\" link=\"\#B40002\" alink=\"\#0C340C\" vlink=\"\#67284C\">\n
<body background =\".\/IMAGES\/rss-news.jpg\">\n
<blockquote>\n
\n
<h2><font color=\"\#390917\">",$file,"<\/font><\/h2>\n";

#4. Remplacement des entites
print FILEOUT $DUMPFULL;
# Pied de page
print FILEOUT "<p><a href=\"\.\/index.htm\"><img src=\"\.\/IMAGES\/index\.gif\"><\/a><\/blockquote>\n<\/body>\n<\/html>\n";
print "\nLe fichier bien accentue se nomme $file.html";
#----------------------------------------------
close(FILEIN);
close(FILEOUT);