File "code.pl"
Full Path: /home/analogde/www/Design/fileman/CHESS_2022/andre/PERL/code.pl
File size: 6.31 KB
MIME-type: application/octet-stream
Charset: 8 bit
#remplace();
#affiche();
#cherche01();
#cherche02();
#cherche03();
#cherche04();
#compte01();
#compte02();
#compte03();
#test();
bidule();
######################################################################
sub remplace()
{
open(FILEINPUT,"$ARGV[0]");
while ($ligne = <FILEINPUT>){
# on remplace dans chaque ligne le motif recherche par remplacement
$ligne=~s/je/pattttte/g;
print $ligne;
}
close(FILEINPUT) ;
}
######################################################################
sub affiche()
{
open FICHIER,"< lettre.txt" or die "Le fichier n'existe pas !";
while ($ligne = <FICHIER>){
print $ligne;
}
close FICHIER;
}
######################################################################
sub cherche01()
{
@ARGV =("lettre.txt");
$nf = @ARGV;
print "Mot rechercher ? ";
chop($critere = <stdin>);
$total = $compt = 0;
$fichier = $ARGV[0];
while ($ligne =<>) {
chop ($ligne);
@mots = split (/ /,$ligne);
$w = 0;
while ($w <= @mots) {
if ($mots[$w] eq $critere) {
$compt += 1;
}
$w++;
}
if (eof) {
print ("Dans le fichier $fichier\n");
print ("Il y a $compt occurences du mot $critere\n\n");
$total += $compt;
$compt = 0;
$fichier = $ARGV[0];
}
}
}
######################################################################
sub cherche02()
{
print "Quel nom voulez-vous reprer ?\n";
$nom = <stdin>;
chomp $nom;
for ($i=0; $i<@tablo; $i++)
{ if($tablo[$i] =~ /$nom/)
{ print "$nom est en position $i\n";
}
}
}
######################################################################
sub cherche03()
{
# ouverture du fichier pass en argument au script
# et association un pointeur de fichier
open(FILEINPUT,"$ARGV[0]");
# parcours du fichier associ au pointeur FILEINPUT
# chaque ligne est stoke dans la variable $ligne
while ($ligne = <FILEINPUT>)
{ # on vrifie si la ligne comptient le motif
if ($ligne=~/folle/)
{ #si oui, on l'imprime
print $ligne;
}
}
}
######################################################################
sub compte01()
{
# compter le nombre d'occurences de chaque mot d'un texte
# => utiliser un tableau associatif index par les mots
# compter le nombre de mots diffrents
# => nombre de cases du tableau
# compter le nombre total de mots
# => solution bis :
# compter ce total au fur et mesure de la lecture
my %tab_words = ();
my $nb_words = 0;
# lit chaque ligne du texte
# et remplit le tableau d'occ
# et calcule le nb total de mots
while (<>) {
chomp;
my @ligne = split;
# ajoute les mots de la ligne courante
$nb_words += $#ligne + 1;
foreach $i (@ligne) {
# ajoute 1 au nb d'occ du mot $i
$tab_words{$i}++;
}
}
# affiche tout le tableau associatif d'occ
print "Nombre d'occurences de chaque mot :\n";
while (($word,$nb) = each(%tab_words)) {
# print $word, " ", $nb, "\n";
printf "%3d %s\n", $nb, $word;
}
# nb mots differents = nb cases tableau
my @listk = keys(%tab_words);
my $nb_unique_words = $#listk +1;
print "Nb total mots : ", $nb_words, "\n";
print "Nb mots diffrents : ", $nb_unique_words, "\n";
}
######################################################################
sub compte02()
{
$/ = ""; #unit de travail le paragraphe
$* = 1; #plusieurs lignes la fois
while (<>){
s/-\n//g; #enlever les tirets
tr/A-Z/a-z/; #minusculiser
@words = split (/\W*\s+\W*/,$_);
foreach $word (@words) {
$wordcount{$word}++;
}
}
foreach $word (sort keys (%wordcount)) {
printf "%20s,%d\n",$word,$wordcount{$word};
}
}
######################################################################
sub cherche04()
{
print("Quel mot voulez-vous rechercher :");
$cherche = <STDIN>;
chop($cherche);
$ligne="0";
$sum="0";
$cond="0";
while(<>){
$cond=$sum;
$ligne +=1;
$sum += (s/\b$cherche\b/$cherche/g);
if($cond != $sum){
print("Ligne $ligne ==> ");
print("$sum\n");
};
};
print("----------------------------------------------------\n");
print("Votre fichier contient $sum fois le mot \'$cherche\'\n");
}
######################################################################
sub compte03()
{
@ARGV =("lettre.txt");
$nbmots = 0;
$nbcar = 0;
while ($ligne = <>) {
@mots = split(/\s+/,$ligne);
foreach $mot (@mots) {
next if ($mot =~/^d+\.?\d+$/);
$mot =~s/[,.;:]$//;
$nbmots ++;
$nbcar += length($mot);
}
}
print ("Nombre total de mots :$nbmots\n");
print ("Nombre total de caractres :$nbcar\n");
$moyenne = $nbcar / $nbmots;
print ("Longueur moyenne d'un mot :$moyenne\n");
}
######################################################################
sub test()
{
# Un tableau avec des valeurs dupliquees :
my @t = qw(hello toto hello vous);
# Declaration d'une table de hachage :
my %h;
# On prend la tranche de %h dont les clefs
# sont les valeurs du tableau @t
# et on leur associe la valeur undef
@h{@t} = ();
# Les clefs de %h sont donc constituees des
# valeurs de @t, et on est s^ur de ne les
# retrouver qu'une seule fois :
@t = keys %h;
$x = "chien chat maison"; # 3 mots
@mots = ($x =~ /(\w+)/g); # correspondance,
print $mots[0];
}
######################################################################
sub bidule()
{
# Initialisation du tableau
my @array=();
open(FILE_HANDLE,"toto.txt") || die ("Erreur d'ouverture de TOTO") ;
#@ligne = <FILE_HANDLE>;
while (<FILE_HANDLE>)
{ # afficher le fichier ligne aprs ligne
print "$_";
}
print $ligne[2];
$var = scalar(@ligne);
# Afficher la taille du tableau
print "on obtient $var";
}
@contenu_fichier = <FILE_HANDLE>;
# $var = scalar(@contenu);
# Afficher la taille du tableau
# print $var;
# supprimer les redondances
@liste = uniq(@contenu_fichier);
# affiche le resultat
print (@liste, "\n");
# recuprer la taille
$taille = scalar(@liste) ;
# affiche le resultat
print $taille;
close(FILE_HANDLE);
#print (@fichier, "\n");
#@liste = uniq(@fichier);
#print (@liste, "\n");
#$taille = scalar(@liste) ;
#print $taille;
#print "lulululululul";
#close(FILE_HANDLE);
#@liste = ('un ','deux ','trois ','quatre ','cinq ','un ','six ');
# @liste = uniq(@liste);
#print (@liste, "\n");
#$taille = scalar(@liste) ;
#print $taille;
######################################################################
sub uniq
{
my (@liste) = @_;
my @double = map {$_, 1} @liste;
# remplace chaque valeur par un couple (valeur, 1)
my %hash = (@double);
# stocke cela dans une table de hashage
return keys %hash;
# extrait les cls (qui sont uniques par dfinition)
}