script perl pour remplacement des chiffre en mots - Perl - Programmation
Marsh Posté le 11-04-2017 à 17:12:24
1) utiliser Tie::File que lorsque c'est au point car ça modifie ton fichier de test
2) utiliser non pas une liste, mais un hash (surtout que au vu de tes données, c'est évident)
A+,
Marsh Posté le 11-04-2017 à 18:18:34
ing8845 a écrit : voila mon essai mais ca donne pas le résultat souhaité |
Ca ne compile (on dit ça pour le Perl? gilou?) même pas...
>Global symbol "$binbre" requires explicit package name
Tu devrais revoir comment utiliser les tableaux (array).
Comme disais gilou un hash c'est evident ici vu les données. Comme tu indiques être étudiante je suppose que c'est un exercice, donc aucun intérêt qu'on (gilou ou moi) te présente une solution toute faite.
edit:
>my @rows = <$fh>;
Inutile de lire tout le fichier en une seule fois, il vaut mieux faire un traitement ligne par ligne.
Marsh Posté le 11-04-2017 à 18:26:54
merci pour la réponse mais je ne sais pas comment utilisé un hash pouvez vous me fournir un exemple
Marsh Posté le 11-04-2017 à 18:30:55
en faite ce n'est pas un exercice c'est un projet de master j'ai un fichier dictionnaire et l'autre ce sont des séquence d'item fréquent extraites d'un corpus .
j'ai simplifié le truc pasque si ca marche je le généralise
Marsh Posté le 11-04-2017 à 18:59:52
ing8845 a écrit : merci pour la réponse mais je ne sais pas comment utilisé un hash pouvez vous me fournir un exemple |
Désolé: RTFM.
ing8845 a écrit : en faite ce n'est pas un exercice c'est un projet de master j'ai un fichier dictionnaire et l'autre ce sont des séquence d'item fréquent extraites d'un corpus . |
C'est quoi comme master, en lien avec la programmation?
Marsh Posté le 11-04-2017 à 19:02:55
mon sujet porte sur la recherche d'information . On analyse des corpus de texte pour mieux répondre aux requêtes pausé par les utilisateurs .
Marsh Posté le 11-04-2017 à 20:27:43
slt !
j'ai changé la méthode mais encore ca ne me donne pas de resultat je ne sais pas comme utiliser le hash
open (AFILE, "fich1.txt" ) or die "unable to open file $!";
my @acon=<AFILE>;
close (AFILE);
open (BFILE, "< fich2.txt" ) or die "unable to open file $!";
my $bcon=join("",<BFILE> );
close (BFILE);
foreach my $match (@acon)
{
my ($num,$item)=split(/ /,$match);
#print "test: $bcon\n";
if($bcon=~m/$num(.*?)\n/i)
{
my $nmatch=$&;
my ($num)=split(/ /,$nmatch);
$bcon =~ s/$bcon/@item/g;
print "$item ";
}
}
Marsh Posté le 11-04-2017 à 21:21:13
Citation : je ne sais pas comme utiliser le hash |
Excuse moi mais un étudiant (h/f) en master devrait largement être capable d'utiliser un moteur de recherche. En principe on peut aussi faire ça avec un tableau (array) mais tu les utilises mal, il faut lire la doc ou un livre sur le Perl5.
edit: Je suppose que la date de naissance indiquée dans ton profil est fausse? (Ce que je peux comprendre.) Ca ne colle pas vraiment avec le master...
Marsh Posté le 11-04-2017 à 21:39:43
je comprends pas votre question !!
j'ai demandé de l'aide car je suis débutante en perl et je suis pressé par le temps.. vous avez pas la réponse souhaité merci de ne pas sortir du contexte de ma question!!!
Marsh Posté le 11-04-2017 à 22:35:43
Quelle question? Mon edit c'est juste par curiosité, rien ne t'obliges de répondre.
Pour le reste, les forums (ou en tout cas celui-ci) ne sont pas là pour enseigner des bases ni pour faire le boulot des gens (cf. règlement) mais pour répondre à des questions concrètes et précises. Tu peux très bien faire ce que tu veux faire avec un tableau/array mais comme je l'ai déjà dit deux fois il faut l'utiliser correctement et ça ce n'est pas le boulot du forum de te l'apprendre. Il y a une doc qui va avec Perl et on trouve certainement pleins de tutoriels aussi. Et puis je suppose que si tu utilises ce language c'est soit parce que tu es obligé et que tu as eu des cours avant (et donc tu devrais savoir comment utiliser les array et hash) soit ça fait partie de ton projet de l'apprendre, dans ce cas c'est à toi de faire un effort... Le manque de temps n'est pas un argument non plus, ça ne tombe pas du ciel ça généralement. Le forum est là pour apporter de l'aide sur des points précis et ça a été fait, gilou t'as indiqué une meilleure méthode de faire et je t'ai dit que tu dois revoir les array.
Marsh Posté le 12-04-2017 à 16:21:40
J'ai code cela vite fait pendant ma pause café parce que j'ai autre chose a faire, donc je n'ai pas testé, mais une solution devrait ressembler a ceci:
Code : |
Ça doit envoyer le résultat a la console.
A+,
Marsh Posté le 11-04-2017 à 12:55:18
Bonjour ,
je suis débutante en perl , mon script doit lire un fichier dictionnaire de la forme
10 je
11 parle
12 elle
et puis lire un autre fichier de la forme
10 11
12 11
et remplacer dans ce dernier chaque nombre avec le mot correspondant dans le premier fichier
le resultat est alors
je parle
elle parle
j'ai quelques idées je pense a mettre le contenu du fichier dictionnaire dans une liste puis comparer la liste avec le 2ieme fichier
#!/usr/bin/perl
use strict;
use warnings;
use autodie;
use Tie::File;
my $filename2 = 'fich1.txt';
open(my $fh1, $filename2)
or die "Could not open file '$filename2' $!";
my @binbre;
foreach (<$fh1> ) {
chomp;
s/[\(\)]//g ;
s/^\d+|\d+$//g;
push @binbre, $_;
print ;
}
close $fh1;
my $filename = 'fich2.txt';
open(my $fh, $filename)
or die "Could not open file '$filename' $!";
my @rows = <$fh>;
chomp @rows;
foreach my $row (@rows) {
if ($row = $binbre)
{$row =~ s/$row/@binbre/g;}
#print "$row\n";
}
close $fh ;
voila mon essai mais ca donne pas le résultat souhaité
helpppp