sh2html.pl

#!/usr/bin/perl
use locale; #caracteres accentues
#On lance comme cela: perl sh2html.pl
#On obtient: fichier.pl.html
#Rem: J'aurai pu faire mieux: j'aurai préféré colorier les lignes plûtot que les items, à une autre version !
#J'ai fait un tableau séparé de perl2html.pl parce que perl n'accepte pas de remplacer des étoiles. La prochaine fois j'améliorerai ce programme et je fusionnerai les deux. Et j'éviterai de mettre des étoiles pour séparer, mais vu la taille des programmes TABV3 et TABV4 j'en avais besoin.
print "Bienvenu(e) au programme qui permet \n d'afficher les programmes bash shell 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##
unless($recup=~/\*/) {
$recup=~s/\#\!\/bin\/bash/<font color="red">\#\!\/bin\/bash<\/font>/g;
if ($recup=~/###/g){
$recup=~s/$recup/<font color="green">$recup<\/font>/g;
$recup=~s/<\/br>\n<\/font>/<\/font><\/br>\n/g; #Résidus
};
if ($recup=~/\/\/\//g){
$recup=~s/$recup/<font color="green">$recup<\/font>/g;
$recup=~s/<\/br>\n<\/font>/<\/font><\/br>\n/g; #Résidus
};
if ($recup=~/@@@/g){
$recup=~s/$recup/<font color="green">$recup<\/font>/g;
$recup=~s/<\/br>\n<\/font>/<\/font><\/br>\n/g; #Résidus
};
if ($recup=~/xxx/g){
$recup=~s/$recup/<font color="green">$recup<\/font>/g;
$recup=~s/<\/br>\n<\/font>/<\/font><\/br>\n/g; #Résidus
};
unless(($recup=~/^<font color="green">/)||($recup=~/<font color="green">/)) {
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;
}; ###Il ne supporte pas les étoiles
$recup=~s/THEMES PORTUGAIS/<font color="green">THEMES PORTUGAIS<\/font>/g;
$recup=~s/THEMES FRANCAIS/<font color="green">THEMES PORTUGAIS<\/font>/g;
$recup=~s/POST EDITION/<font color="green">POST EDITION<\/font>/g;
##Quelques variables sans le dollar##
$recup=~s/m1/<font color="orange">m1<\/font>/g;
$recup=~s/n1/<font color="orange">n1<\/font>/g;
$recup=~s/m2/<font color="orange">m2<\/font>/g;
$recup=~s/n2/<font color="orange">n2<\/font>/g;
$recup=~s/m3/<font color="orange">m3<\/font>/g;
$recup=~s/n3/<font color="orange">n3<\/font>/g;
$recup=~s/i1/<font color="orange">i1<\/font>/g;
$recup=~s/k1/<font color="orange">k1<\/font>/g;
$recup=~s/i2/<font color="orange">i2<\/font>/g;
$recup=~s/k2/<font color="orange">k2<\/font>/g;
$recup=~s/i3/<font color="orange">i3<\/font>/g;
$recup=~s/k3/<font color="orange">k3<\/font>/g;
$recup=~s/a=/<font color="orange">a=<\/font>/g;
$recup=~s/a1=/<font color="orange">a1=<\/font>/g;
$recup=~s/a2=/<font color="orange">a2=<\/font>/g;
$recup=~s/a3=/<font color="orange">a3=<\/font>/g;
$recup=~s/a4=/<font color="orange">a4=<\/font>/g;
$recup=~s/b=/<font color="orange">b=<\/font>/g;
$recup=~s/b1=/<font color="orange">b1=<\/font>/g;
$recup=~s/b2=/<font color="orange">b2=<\/font>/g;
$recup=~s/b3=/<font color="orange">b3=<\/font>/g;
$recup=~s/b4=/<font color="orange">b4=<\/font>/g;
$recup=~s/c=/<font color="orange">c=<\/font>/g;
$recup=~s/c1=/<font color="orange">c1=<\/font>/g;
$recup=~s/c2=/<font color="orange">c2=<\/font>/g;
$recup=~s/c3=/<font color="orange">c3=<\/font>/g;
$recup=~s/c4=/<font color="orange">c4=<\/font>/g;
$recup=~s/d=/<font color="orange">d=<\/font>/g;
$recup=~s/d1=/<font color="orange">d1=<\/font>/g;
$recup=~s/d2=/<font color="orange">d2=<\/font>/g;
$recup=~s/d3=/<font color="orange">d3=<\/font>/g;
$recup=~s/d4=/<font color="orange">d4=<\/font>/g;
$recup=~s/e=/<font color="orange">e=<\/font>/g;
$recup=~s/e1=/<font color="orange">e1=<\/font>/g;
$recup=~s/e2=/<font color="orange">e2=<\/font>/g;
$recup=~s/e3=/<font color="orange">e3=<\/font>/g;
$recup=~s/e4=/<font color="orange">e4=<\/font>/g;
$recup=~s/f=/<font color="orange">f=<\/font>/g;
$recup=~s/f1=/<font color="orange">f1=<\/font>/g;
$recup=~s/f2=/<font color="orange">f2=<\/font>/g;
$recup=~s/f3=/<font color="orange">f3=<\/font>/g;
$recup=~s/f4=/<font color="orange">f4=<\/font>/g;
$recup=~s/z=/<font color="orange">z=<\/font>/g;
$recup=~s/&quot\;z/&quot\;<font color="orange">z<\/font>/g;
$recup=~s/tablo=/<font color="orange">tablo=<\/font>/g;
$recup=~s/var1=/<font color="orange">var1=<\/font>/g;
$recup=~s/var2=/<font color="orange">var2=<\/font>/g;
$recup=~s/var3=/<font color="orange">var3=<\/font>/g;
$recup=~s/var4=/<font color="orange">var4=<\/font>/g;
$recup=~s/var5=/<font color="orange">var5=<\/font>/g;
$recup=~s/var6=/<font color="orange">var6=<\/font>/g;
$recup=~s/var7=/<font color="orange">var7=<\/font>/g;
$recup=~s/var8=/<font color="orange">var8=<\/font>/g;
$recup=~s/a hre<font color="orange">f=<\/font>/a href/g; #correction
$recup=~s/mot01/<b><font color="orange">mot01<\/font><\/b>/g;
$recup=~s/potentiel de repos/<b>potentiel de repos<\/b>/g;
$recup=~s/potentiel-de-repos/<b>potentiel-de-repos<\/b>/g;
$recup=~s/potencial de repouso/<b>potencial de repouso<\/b>/g;
$recup=~s/potencial-de-repouso/<b>potencial-de-repouso<\/b>/g;

##Les variables par ordre alphabétique##
unless ($recup=~/<font color="orange">\$z/){
$recup=~s/\$z/<font color="orange">\$z<\/font>/g;
};
unless ($recup=~/<font color="orange">\$var/){
$recup=~s/\$var/<font color="orange">\$var<\/font>/g;
};
$recup=~s/\$treetagger/<font color="orange">\$treetagger<\/font>/g;
unless ($recup=~/<font color="red">\$tablo/){
$recup=~s/\$tablo/<font color="red">\$tablo<\/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;
unless ($recup=~/<font color="orange">\$n/){
$recup=~s/\$n/<font color="orange">\$n<\/font>/g;
};
unless ($recup=~/<font color="orange">\$m/){
$recup=~s/\$m/<font color="orange">\$m<\/font>/g;
};
$recup=~s/\$line/<font color="orange">\$line<\/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">\$l/){
$recup=~s/\$l/<font color="orange">\$l<\/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;
};
unless($recup=~/<font color="orange">\$f/) {
$recup=~s/\$f/<font color="orange">\$f<\/font>/g;
};
unless($recup=~/<font color="orange">\$e/) {
$recup=~s/\$e/<font color="orange">\$e<\/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 Bash par ordre alphabétique
$recup=~s/sed /<font color="red">sed <\/font>/g;
$recup=~s/perl /<font color="red">perl <\/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="darkcyan">echo <\/font>/g;
$recup=~s/cat /<font color="aqua">cat <\/font>/g;
$recup=~s/cp /<font color="#D24513">cp <\/font>/g;
$recup=~s/cd /<font color="#D24513">cd <\/font>/g;
$recup=~s/pwd /<font color="#D24513">pwd <\/font>/g;
$recup=~s/for line /<font color="darkmagenta">for line <\/font>/g;
$recup=~s/let /<font color="#D24513">let <\/font>/g;
$recup=~s/mkdir /<font color="#00618B">mkdir <\/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>La langue n'est pas un long fleuve tranquille 1: Comparaison morpholexicale du vocable potentiel dans le domaine de la biologie cellulaire entre le Français et le Portugais<\/title>\n
<meta http-equiv=\"content-type\" content=\"text\/html; charset=windows-1250\">\n
<\/head>\n
<body bgcolor=\"\#DEF7D8\" text=\"\#DE6B3F\" link=\"\#034B16\" alink=\"\#C059E2\" vlink=\"\#431C4F\" background=\".\/IMAGES\/multibk.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.html\"><img src=\"\.\/IMAGES\/index\.gif\"><\/a>\n<\/blockquote>\n<\/body>\n<\/html>\n";
print "\nLe fichier bien accentue se nomme $file.html";
#----------------------------------------------
close(FILEIN);
close(FILEOUT);