[PERL]- traduire du shell en perl

Fermé
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 - 9 avril 2008 à 13:39
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 - 22 avril 2008 à 15:29
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
13 avril 2008 à 00:27
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 14:32
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 17:21
personne qui saurait??
0
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 19:40
au secours!!! lol
0

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

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 avril 2008 à 20:35
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 20:39
je sais je suis mal en point
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 avril 2008 à 20:39
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 20:45
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 22:00
qui aurait une solution en perl?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 avril 2008 à 22:03
moi ;-)

mais pas ce soir
si jamais tu n'auras pas de réponse, je verrai ça demain ;-)
0
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
9 avril 2008 à 22:08
d'accord je retiens!!! tu m'oubli pas!!!!
en tous cas merci !!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
9 avril 2008 à 22:16
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 08:21
bonjour a tous!!!!
0
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 11:13
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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 avril 2008 à 11:40
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 11:46
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 11:48
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 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 13:34
le perl est moi :(
0
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 14:41
edit: et moi
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
10 avril 2008 à 14:50
patience ;-)

c'est promis pour ce soir ;-))
0
tonixm Messages postés 127 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 30 janvier 2009 4
10 avril 2008 à 15:06
hihi!!
d'accord merci
0