Traitement perl repertoire-et ss repertoire

Fermé
knebhi Messages postés 61 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 17 juin 2009 - 16 avril 2008 à 11:16
youllla Messages postés 24 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 6 juillet 2009 - 17 juin 2009 à 16:28
Bonjour,

Je souhaiterai effectuer un traitement sur des fichiers txt pour enlever une partie du texte (l'en-tête).
J'ai ce script perl qui devrait me renvoyer mes fichiers .abu en .txt après les avoir traités.

Cependant, il me renvoit l'erreur :
impossible d'ouvrir Francois.le.champi_ABU.abu


voici mon code perl :
#!/usr/bin/perl

use strict;
use locale;

if ( $#ARGV != 0 ){ 
    die "Usage : ", $0, " REPERTOIRE\n";
}

##ouverture du repertoire en argument
opendir( REPERTOIRE, $ARGV[0] ) or 
    die "impossible d'ouvrir le répertoire ", $ARGV[0], "\n";
    
###on stocke les fichier .abu dans @fichiers
my @fichiers = grep( /\.abu$/, readdir(REPERTOIRE) );
closedir(REPERTOIRE);
##boucle pour remplacer les .Abu en .txt
for my $f (@fichiers){
    my $r = $f ;
    $r =~ s/^(.*)\.abu$/$1.txt/;
    print STDERR $r, "\n";
    # traitement du fichier pour enlever les entetes
    open(ENTREE, "<" $f) or die "impossible d'ouvrir ", $f;
    open(SORTIE, ">", $r) or die "impossible d'ouvrir ", $r;
    my $dans_texte = 0;
    while(my $ligne = <ENTREE>)
    {
	if($ligne =~ / FIN DU FICHIER /)
		{
	    $dans_texte = 0;
		}	
	if($dans_texte){
	    print SORTIE $ligne ;
	}
	if($ligne =~ / DEBUT DU FICHIER /){
	    $dans_texte = 1;
	}
    }
    close(SORTIE);
    close(ENTREE);
}


je precise que je suis sous mac os et que ma je tape le nom du fichier.pl et le repertoire en argument

merci

7 réponses

knebhi Messages postés 61 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 17 juin 2009 2
17 juin 2009 à 15:05
tu veu faire quoi comme traitement exactement?
0
youllla Messages postés 24 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 6 juillet 2009
17 juin 2009 à 15:10
je doi just lister ceux dont le proprio est root, ceux qui ont une extension aprés le forwward par exple : .sar .mag ... et ceu ki datent d'avant une ceratine date
0
knebhi Messages postés 61 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 17 juin 2009 2
17 juin 2009 à 15:18
je pense que c'est pas très compliqué. en fait, ce que tu dois faire c'est lire ton fichier ligne par ligne.

ensuite tu fera une boucle conditionnel :
1) si c'est root tu aura le -r donc tu utilisera les expression réguliere
2) si après le forward tu as un '.'
3) pour les dates je te propose de lister les mois ki te concerne et de récupérer
(si sa se décompose en jour tu pourra aussi mai la jai pa la méthode fau réfléchir)

si tu connais un peu les methodes de lecture de fichier, les regexp et les structure conditionnel come if alors tu va te débrouiller
0
youllla Messages postés 24 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 6 juillet 2009
17 juin 2009 à 15:26
merci bcp :)
la je suis dans un répertoire,et je doi faire ce tri dans ce meme répertoire ,dans ce dernier comm vs avez pu le constater ,ya des colonnes correspondants aux : dates, fichier .forward, noms d'expéditeurs etc
le pblm c k j sai pa commen accéder a chak champ :s
0

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

Posez votre question
knebhi Messages postés 61 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 17 juin 2009 2
17 juin 2009 à 16:16
si jcomprend bien c'est des répertoire et non un fichier?
0
youllla Messages postés 24 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 6 juillet 2009
17 juin 2009 à 16:28
oui voila c des repertoires
0
Bonjour
au fait,je vous écri nn pas pr répondre a votr question ( je suis Dsl, je débute sur Perl) ,je voulai vous poser des question si possibl ...
je doi faire un programme avec Perl ki permet de faire un certain traitemen sur un répertoir,ou il ya des noms,des dates ... comm tu peu l voir :
-rw------- 1 shoang shomcmo 27 Mar 30 23:33 shoang.forward
-rw------- 1 sifrseis sismercb 30 Dec 22 2004 sifrseis.forward
-rw------- 1 sispubli other 27 Apr 5 2005 sispubli.forward
-rw------- 1 sjacquin orstenv 27 Apr 15 14:16 sjacquin.forward
-rw------- 1 skerampr ensieta 27 Mar 30 23:31 skerampr.forward
-rw------- 1 slaville genembcb 43 Jun 24 2005 slaville.forward
-rw------- 1 slouazel shomcmo 27 Mar 30 23:33 slouazel.forward
-rw------- 1 sloyer shomcmo 27 Mar 30 23:33 sloyer.forward
-rw------- 1 jfilipot ditiric 78 Dec 8 2005 socean.forward
-rw------- 1 spinson root 27 May 26 16:52 spinson.forward
-rw------- 1 spouliqu cersat 36 May 6 2008 spouliqu.forward
-rw------- 1 sraynaud actimar 27 Mar 31 10:51 sraynaud.forward
-rw------- 1 25582 cneva 24 Oct 15 2003 sstourm.forward.old
-rw-r--r-- 1 statipev other 41 Aug 26 2004 statipev.forward
-rw------- 1 tarfaomo ensieta 27 Mar 30 23:31 tarfaomo.forward
-rw------- 1 11764 nse 25 Nov 27 2007 tfabre.forward
-rw------- 1 tgorgues orstenv 27 May 18 09:20 tgorgues.forward


et je sai vrmt pas commen j doi procéder :(:(
-1