[PERL]- traduire du shell en perl

tonixm Messages postés 127 Statut Membre -  
tonixm Messages postés 127 Statut Membre -
Bonjour,

Avis aux habitués!!
je suis en train de me mordre les doigts sur une traduction d'un programme en perl:

cat $Conf_file | while read line
do
cat $File.sort | grep -v -w "$line" > $File.tmp
cat $File.tmp > $File.sort
done
cat $File.sort | sort >> $File.focal

Merci de tout coeur!!!
A voir également:

90 réponses

lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
essaie ça
#!/usr/bin/perl
use strict;use warnings;

open CONF,"fichier.conf"
   or die "E/S : $!\n";
open ANALYSE,"fichier.analyse"
   or die "E/S : $!\n";
open TMP,">fichier.tmp"
   or die "E/S : $!\n";

my @conf=<CONF>;
chomp @conf;
while(my $e=<ANALYSE>){
  print TMP $e unless grep
  {
    if($_=~/\|/){
      my ($x,$y)=split /\|/,$_;
      $y=~s/^\s*(.*)/$1/;
      $e=~/${x}.*$y/;
    }else{
      $e=~/$_/;
    }
  } @conf;
}
__END__
1
tonixm Messages postés 127 Statut Membre 4
 
j'ai essayé cela mais sans succès:


local ($line); # déclaration locale d'une variable
foreach $line ($conf_file){
# On test $file.analyse pour savoir s'il ne contient pas les lignes $line
# et on met dans $file.tmp les éléments de $file.analyse différents de $line
if($file_analyse!=~ m/$line/i){
system("cat $file_analyse > $file_tmp");
}
system("cat $file_tmp > $file_analyse");
}
system("cat $file_analyse | sort >> $file_focal");
0
tonixm Messages postés 127 Statut Membre 4
 
personne qui saurait??
0
tonixm Messages postés 127 Statut Membre 4
 
au secours!!! lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

vu aussi l'autre message je pense qu'on a un p'tit problème ;-))

ce n'est pas comme ça qu'on traduit un programme.

tu dois expliquer ce qu'il fait et ensuite on verrra
0
tonixm Messages postés 127 Statut Membre 4
 
je sais je suis mal en point
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
ce que t'as fait dans ton message ce n'est pas du perl
tu fait appel aux commandes système grâce à la fonction system()

si tu veux vraiment du pur Perl, explice ce que tu dois traiter et ce que tu veux obtenir et je vais t'aider

à toi
0
tonixm Messages postés 127 Statut Membre 4
 
merci.

cat $Conf_file | while read line
do
cat $File.sort | grep -v -w "$line" > $File.tmp
cat $File.tmp > $File.sort
done
cat $File.sort | sort >> $File.focal

Il faut que je lise chaque ligne du fichier.sort (qui est le fichier à traiter) et je le compare a toutes les lignes de mon fichier de conf qui est $conf_file.
Si mon fichier.sort ne ressemble a aucune lignes du fichier de conf je met cette ligne provisoirement dans un fichier .tmp
Je fais cela pour toutes les lignes de mon fichier.sort.

Puis je met le fichier.tmp dans le .sort du départ en concaténant et en écrasant ce qu'il y avait au debut.

Et finalement je concatène le fichier.sort après l'avoir trié par ordre alphabétique dans le fichier.focal

j'espere avoir été clair sinon demande moi
0
tonixm Messages postés 127 Statut Membre 4
 
qui aurait une solution en perl?
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
moi ;-)

mais pas ce soir
si jamais tu n'auras pas de réponse, je verrai ça demain ;-)
0
tonixm Messages postés 127 Statut Membre 4
 
d'accord je retiens!!! tu m'oubli pas!!!!
en tous cas merci !!
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
tu m'oubli pas!!!!
c'est vrai que j'ai la mémoire courte et en plus je suis paresseux
toutefois je ferai un effort pour ne pas oublié ;-))
0
tonixm Messages postés 127 Statut Membre 4
 
bonjour a tous!!!!
0
tonixm Messages postés 127 Statut Membre 4
 
Qui saurait faire cela en perl:
Il faut que je lise chaque ligne du fichier.sort (qui est le fichier à traiter) et je le compare a toutes les lignes de mon fichier de conf qui est $conf_file.
Si mon fichier.sort ne ressemble a aucune lignes du fichier de conf je met cette ligne provisoirement dans un fichier .tmp
Je fais cela pour toutes les lignes de mon fichier.sort.

Puis je met le fichier.tmp dans le .sort du départ en concaténant et en écrasant ce qu'il y avait au debut.

Et finalement je concatène le fichier.sort après l'avoir trié par ordre alphabétique dans le fichier.focal
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Je ne comprends pas cette partie en concaténant et en écrasant ce qu'il y avait au debut.


que veut tu faire exactement?
montre un exemple.

0
tonixm Messages postés 127 Statut Membre 4
 
oui je veux dire par là faire une ecriture en ecrasant ce qu'il y avait au debut: > écriture (ecrasement)

Début:
file.tmp
aaa
ee
ff

file.sort
grrg
hhyj
zfe"
rg

Donc je veux faire:

file.tmp (on y touche pas)
aaa
ee
ff

file.sort
aaa
ee
ff
0
tonixm Messages postés 127 Statut Membre 4
 
pour l'instant je suis là:
Il faut que je lise chaque ligne du fichier.sort (qui est le fichier à traiter) et je le compare a toutes les lignes de mon fichier de conf qui est $conf_file:

open (FICANA, "+>$file_analyse");
pen (FICCONF, "$conf_file");
while($analyse=<FICANA>){

# On test $file.analyse pour savoir s'il ne contient pas les lignes $line
# et on met dans $file.tmp les éléments de $file.analyse différents de $line
while($ligne=<FICCONF>){
if($analyse!=~ m/\$ligne/){
0
tonixm Messages postés 127 Statut Membre 4
 
le perl est moi :(
0
tonixm Messages postés 127 Statut Membre 4
 
edit: et moi
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
patience ;-)

c'est promis pour ce soir ;-))
0
tonixm Messages postés 127 Statut Membre 4
 
hihi!!
d'accord merci
0