# Programme de traduction d'UTF-8 en ASCII-HTML au format "entités décimales" 
# en mettant en gras les caractères qui sortent du plan de base. 
# Réalisation en Perl 
# =============================================================================

use strict;
use warnings;
use open ':utf8'; 

sub trans (\@){ # arg. tableau de lignes , renvoie un tableau de lignes
     my ($tablignes) = @_ ;
     my @rtab;
     my $k = 0;
     foreach my $ligne ( @$tablignes ){
         my @tabcar = split(//, $ligne);
         my $rligne = "";
         foreach my $car ( @tabcar ){
             my $nb = ord($car); # décimal
             if( $nb < 128 ){ # ASCII
                 $rligne .= $car;
             }elsif( $nb < 65536 ){ # BMP                  
                 $rligne .= "&#".$nb.";";
             }else{ # Plan supplémentaire
                 $rligne .= "<b>&#".$nb.";</b>";
             }
         }
         $rtab[$k] = $rligne."<br />\n";
         $k++;
     }
     return @rtab;
} # trans


sub extrans($$){ # arg 2 noms de fichier
     my ($fichIn, $fichOut) = @_ ;
     
     open(ENTREE, "<:utf8", $fichIn); # UTF-8
     open(SORTIE, ">$fichOut"); # ASCII
     my @tab = <ENTREE>;
     my @res = trans(@tab);
     
     foreach my $lgn ( @res ){
         print(SORTIE "$lgn");
     }
} # extrans

extrans($ARGV[0], $ARGV[1]); # en ligne de commande

        
