Un texte en entrée, lire les mots de ce texte, ranger les mots dans un dictionnaire.
Programme 1
#!/usr/bin/perl # liremot.pl #----------------------------------------------------------------------------------- #Ce petit programme est une introduction au TAL avec PERL. Il permet de lire une # suite de mots entree par l'utilisateur. Cette suite de mots est segmentee # en mots, ces derniers etant enregistres dans deux dictionnaires #----------------------------------------------------------------------------------- print STDOUT "Entrez une suite de mots : "; $ligne = <STDIN>; print STDOUT "Ligne lue : $ligne \n"; $mot=""; $i=0; $nbcar = 0; %dico2=(); open(DIC1,">dico1.txt"); open(DIC2,">dico2.txt"); $ligne =~s/[ ]+/ /g; $ligne =~s/^ ([^ ])/$1/g; print STDOUT "Ligne modifiee (sans double blancs et sans blanc au depart) : $ligne \n"; while (substr($ligne,$nbcar, 1)=~/(.)/) { $caractere = $1; print "caractere lu : $caractere\n"; if ($caractere =~/ /) { print "Mot construit : <mot$i = $mot>\n"; $existmot=0; foreach $motInDico1 (@dico1) { if ($motInDico1 eq $mot) { print "Mot deja recense dans dico1 \n"; $existmot=1; } } if ($existmot == 0) { $dico1[$i]=$mot; $i = $i + 1; } if (exists ($dico2{$mot})) { print "Mot deja recense dans dico2 \n"; } else { $dico2{$mot}="$mot"." <Categorie: ?>"; } $mot=""; } else { $mot = "$mot"."$caractere"; print "Mot en construction : $mot\n"; } $nbcar = $nbcar + 1; } print "Mot construit : <mot$i = $mot>\n"; $existmot="0"; foreach $motInDico1 (@dico1) { if ($motInDico1 eq $mot) { # print "Mot deja recense dans dico1 \n"; $existmot=1; } } if ($existmot == 0) { $dico1[$i]=$mot; $i = $i + 1; } if (exists ($dico2{$mot})) { print "Mot deja recense dans dico2 \n"; } else { $dico2{$mot}="$mot"." <Categorie: ?>"; } print "Lecture/Ecriture dico1 \n"; foreach $mot (@dico1) { print "mot in dico1 : $mot\n"; print DIC1 "$mot\n"; } print "Lecture/Ecriture dico2 \n"; foreach $item (sort keys %dico2) { print "(mot : $item) => Description in dico2 : $dico2{$item}\n"; print DIC2 "(mot : $item) => $dico2{$item}\n"; } close(DIC1); close(DIC2);
Programme 2
#!/usr/bin/perl # lirmo2.pl #----------------------------------------------------------------------------------- # SEANCE 1 - PERL : LIRE UN MOT #----------------------------------------------------------------------------------- #Ce petit programme est une introduction au TAL avec PERL. Il permet de lire une # suite de mots entree par l'utilisateur. Cette suite de mots est segmentee # en mots, ces derniers etant enregistres dans deux dictionnaires #----------------------------------------------------------------------------------- #-------------------------------------------------------------- # Sous-Programme sub rangemot { $existmot = 0; foreach $motInDico1 (@dico1) { if ($motInDico1 eq $mot) { print "Mot deja recense dans dico1 \n"; $existmot=1; } } if ($existmot == 0) { $dico1[$i]=$mot; $i = $i + 1; } if (exists ($dico2{$mot})) { print "Mot deja recense dans dico2 \n"; } else { $dico2{$mot}="$mot"." <Categorie: ?>"; } } #-------------------------------------------------------------- # Programme principal print STDOUT "Entrez une suite de mots : "; $ligne = <STDIN>; print STDOUT "Ligne lue : $ligne \n"; $mot=""; $i=0; $nbcar = 0; %dico2=(); open(DIC1,">dico1.txt"); open(DIC2,">dico2.txt"); $ligne =~s/[ ]+/ /g; $ligne =~s/^ ([^ ])/$1/g; print STDOUT "Ligne modifiee (sans double blancs et sans blanc au depart) : $ligne \n"; while (substr($ligne,$nbcar, 1)=~/(.)/) { $caractere = $1; print "caractere lu : $caractere\n"; if ($caractere =~/ /) { print "Mot construit : <mot$i = $mot>\n"; rangemot; $mot=""; } else { $mot = "$mot"."$caractere"; print "Mot en construction : $mot\n"; } $nbcar = $nbcar + 1; } rangemot; print "Lecture/Ecriture dico1 \n"; foreach $mot (@dico1) { print "mot in dico1 : $mot\n"; print DIC1 "$mot\n"; } print "Lecture/Ecriture dico2 \n"; foreach $item (sort keys %dico2) { print "(mot : $item) => Description in dico2 : $dico2{$item}\n"; print DIC2 "(mot : $item) => $dico2{$item}\n"; } close(DIC1); close(DIC2);
Programme 3
#!/usr/bin/perl # lirmo3.pl #----------------------------------------------------------------------------------- # SEANCE 1 - PERL : LIRE UN MOT #----------------------------------------------------------------------------------- #Ce petit programme est une introduction au TAL avec PERL. Il permet de lire une # suite de mots dans un fichier. Cette suite de mots est segmentee # en mots, ces derniers etant enregistres dans deux dictionnaires #----------------------------------------------------------------------------------- #-------------------------------------------------------------- # Sous-Programme sub rangemot { $existmot = 0; foreach $motInDico1 (@dico1) { if ($motInDico1 eq $mot) { print "Mot deja recense dans dico1 \n"; $existmot=1; } } if ($existmot == 0) { $dico1[$i]=$mot; $i = $i + 1; } if (exists ($dico2{$mot})) { print "Mot deja recense dans dico2 \n"; } else { $dico2{$mot}="$mot"." <Categorie: ?>"; } } #-------------------------------------------------------------- # Programme principal $mot=""; $i=0; $nbcar = 0; %dico2=(); open(DIC1,">dico1.txt"); open(DIC2,">dico2.txt"); open(FILEINPUT,"$ARGV[0]"); LIGNE: while($ligne=<FILEINPUT>) { print "$ligne"; #saute les lignes commencant par le diese next LIGNE if ($ligne=~/^#/); #saute les lignes vides next LIGNE if ($ligne=~/^$/); print "ligne lue : $ligne\n"; #suppression de certains caracteres $ligne =~s/[\/\t]+/ /g; $ligne =~s/[\$\.\:\)\(\"\/;\{\}=\@\+\,]+/ /g; $ligne =~s/[ ]+/ /g; $ligne =~s/^ ([^ ])/$1/g; $ligne =~s/([^ ]) $/$1/g; print STDOUT "Ligne modifiee (sans double blancs et sans blanc au depart...) : $ligne \n"; while (substr($ligne,$nbcar, 1)=~/(.)/) { $caractere = $1; print "caractere lu : $caractere\n"; if ($caractere =~/ /) { print "Mot construit : <mot$i = $mot>\n"; rangemot; $mot=""; } else { $mot = "$mot"."$caractere"; print "Mot en construction : $mot\n"; } $nbcar = $nbcar + 1; } rangemot; } print "Lecture/Ecriture dico1 \n"; foreach $mot (@dico1) { print "mot in dico1 : $mot\n"; print DIC1 "$mot\n"; } print "Lecture/Ecriture dico2 \n"; foreach $item (sort keys %dico2) { print "(mot : $item) => Description in dico2 : $dico2{$item}\n"; print DIC2 "(mot : $item) => $dico2{$item}\n"; } close(DIC1); close(DIC2); close(FILEINPUT);
Programme 4
#!/usr/bin/perl
# lirefichier.pl
#-----------------------------------------------------------------------------------
# SEANCE 1 - PERL : LIRE MOT
#-------------------------------------------------------------------------
#
sub rangemot {
$existmot = 0;
foreach $motInDico1 (@dico1)
{
if ($motInDico1 eq $mot)
{
print "Mot deja recense dans dico1 \n";
$existmot=1;
}
}
if ($existmot == 0)
{
$dico1[$i]=$mot;
$i = $i + 1;
}
if (exists ($dico2{$mot}))
{
print "Mot deja recense dans dico2 \n";
}
else
{
$dico2{$mot}="$mot"." <Categorie: ?>";
}
}
#Programme principal
%dico2=();
open(DIC1,">dico1.txt");
open(DIC2,">dico2.txt");
$i = 0;
$Ligne = 0;
READ: while(<>)
{
#saute les lignes vides
next READ if (/^$/);
s/[ ]+/ /g;
s/[\/\t]+/ /g;
s/[\$\.\:\)\(\"\/;\{\}=\@\+\,]+/ /g;
chop;
$Ligne++;
$Lignes[$Ligne] = $_ ;
@Mots = split(/\W+/);
for $mot (@Mots) {
$mot =~ /\D/ or next ;
print "$mot \n";
rangemot;
}
}
for $line (@Lignes) {
print "Ligne : $line \n";
}
print "Lecture/Ecriture dico1 \n";
foreach $mot (@dico1)
{
print "mot in dico1 : $mot\n";
print DIC1 "$mot\n";
}
print "Lecture/Ecriture dico2 \n";
foreach $item (sort keys %dico2)
{
print "(mot : $item) => Description in dico2 : $dico2{$item}\n";
print DIC2 "(mot : $item) => $dico2{$item}\n";
}
close(DIC1);
close(DIC2);