IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Petit soucie avec script de récup d'info


Sujet :

Web Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 31
    Points
    31
    Par défaut Petit soucie avec script de récup d'info
    Salut c'est ENCORE moi!!
    Voilou je m'explique...

    En fait je voulais récup des informations d'un .log de sauvegarde pour les regrouper dans un autre fichier ...

    Cepandant ça me met un message d'erreur quand je l'exécute dans la fenètre de commande :

    Global symbol "@fields" requires explicit package name at Test1.pl line 24
    Global symbol "@fields" requires explicit package name at Test1.pl line 24
    Execution of Test1.pl aborded due to compilation errors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #! /Perl/bin/perl -w
     
    use strict;
    use warnings;
     
    # Ouverture du fichier cible
    # Lecture ligne par ligne et prise en compte du 2ème champ
     
    sub lecture {
      open my($file), '<', 'Adresse du projet à lire qui se nomme tina.log' 
        or die "Couldn't open tina.log : $!\n";
      while (<$file>) {
        my @fields = split /\s+/;
        }
    }
     
     
    # Sub. Créa. et Ecriture du .txt 
     
    sub ecriture {
    	my $fichier_out = "Fichier creer pour écrire dessus = sortie.txt";
    	open (OUT,">$fichier_out");
    	foreach my $fields (@_) {
    		print OUT $fields[1], "\n" if @fields >= 3;
    	 }
    	close(OUT);
    }
     
    my @fields = &lecture;
    &ecriture(@fields);
    Je voudrais lire ligne par ligne le .log,
    je vous met un exemple du log qui est composer de plusieurs parties comme suit, les infos soulignées sont celles que je voudrait récup.:

    Sauvegarde bckad1lib1fr A (Totale) OK ALARME MINEURE
    --------------------------------------------------------------------------

    Soumission :01 fév 20:00
    Démarrage :01 fév 20:00
    Fin :01 fév 20:54

    Id :64245 Volume : 23 235 375 772 Objets :73176
    Priorité du travail : moyenne

    Format de la sauvegarde : TiNa
    Cartouches :
    BCK600414@drive1 / 36
    BCK600415@drive1 / 1
    BCK600415@drive1 / 2


    Si il y a des questions n'hésitez pas car je suis débutant!
    Je vous remerci d'avance.

  2. #2
    Membre averti Avatar de Vespasien
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 383
    Points : 434
    Points
    434
    Par défaut
    $file = ???

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open my($file), '<', 'Adresse du projet à lire qui se nomme tina.log'
    Ne remplace pas ?!
    $file = Adresse du projet ...

    Mince ....
    L'erreur pourrez venir de là?

    De plus le script est composer de bride de script que j'ai trouver par si / par là..
    Je suis débutant et on me demande ça alors je galère un peu...

  4. #4
    Membre confirmé Avatar de iblis
    Inscrit en
    Janvier 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 510
    Points : 570
    Points
    570
    Par défaut
    1. l'écriture &lecture n'est pas recommandée. Utilise lecture(). Perl 5 accepte les appels avec & (à la Perl 4) mais les appels de subroutines sans () sont sources de confusion. Regarde ce qu'en dit Perl Best Practices à l'occasion.

    2. @fields est déclaré dans tes procédures et n'est donc pas accessible dans le main.

    Transmets plutôt une ref sur ton tableau.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    J'ais retravaillé mon code en tenant compte de vos suggestions,
    le fichier texte qui devrais contenir les info. est creer mais ne contiend rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    #! /Perl/bin/perl -w
     
    use strict;
     
    # Déclaration Variables
     
    my @infos_fichier = &lecture;
    &ecriture(@infos_fichier);
    my (@valeur);
     
    # Subroutine Lecture
     
    sub lecture {
    	my $fichier_in = "emplacement du fichier tina.log";
    	open (IN, "$fichier_in") || die "Impossible d'ouvrir le fichier tina.log pour la cause suivante : $!\n";
      my @infos_fichier = split (/\\s+/, $fichier_in);
      close IN;
    	return @infos_fichier;
    }
     
    # Subroutine Ecriture
     
    sub ecriture {
    	my $fichier_out = "emplacement di fichier sortie.txt";
    	open (OUT,">$fichier_out");
    	foreach my $valeur (@_) {
    		print OUT $valeur[2], "\n" if @infos_fichier >= 2;
    	}
    	close(OUT);
    }
     
    __END__
    Désoler de vous embêter ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit souci avec un script
    Par Equinoxe5 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/09/2006, 15h43
  2. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  3. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo