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

Programmation et administration système Perl Discussion :

Script perl qui appelle un script perl avec un time


Sujet :

Programmation et administration système Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Points : 29
    Points
    29
    Par défaut Script perl qui appelle un script perl avec un time
    Bonjour à tous,
    Je rencontre un problème pour enregistrer le temps que met mon script perl.
    Mon problème vient du fait que j'ai un premier script qui sert un peu de main et qui appelle un autre script en lui passant les paramètres.

    Script main.pl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #! /usr/bin/perl
     
    foreach $lettre ("a", "b", "c"){
    	foreach $chiffre (1, 2, 3){
    		system("perl test.pl $lettre $chiffre");
    	}
    }
    Script test.pl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #! /usr/bin/perl
    $lettre = $ARGV[0];
    $chiffre = $ARGV[1];
     
    print "test : $lettre $chiffre\n";
    `touch test$lettre$chiffre`;
    J'ai besoin d'enregistrer le résultat de time dans le fichier qui est créé par le script test afin de sauvegarder le temps d'exécution de chaque expérimentation. Tous les fichiers créés par le script test ont toujours le format test$lettre$chiffre, du coup j'ai essayé d'ajouter le temps à la fin de ce fichier en utilisant cette commande dans mon main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("( time perl test.pl $lettre $chiffre ) 2> test$lettre$chiffre");
    Mais malheureusement bien que cette commande écrive le temps dans le bon fichier, elle me l'écrit au début du fichier ce qui efface ce qui avait avant sur les 10 premières lignes.
    Du coup comment puis je faire pour y enregistrer à la fin?

    De plus le temps retourné a un format bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0.15user 0.02system 0:00.16elapsed 112%CPU (0avgtext+0avgdata 88800maxresident)k
    0inputs+80outputs (0major+6815minor)pagefaults 0swaps
    Comment dois je faire pour avoir un format simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    real        0m4.704s
    user        0m4.584s
    sys        0m0.684s
    Bonne journée à ceux qui me liront

  2. #2
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    pour indiquer que tu veux écrire à la fin du fichier, double la redirection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("( time perl test.pl $lettre $chiffre ) 2>> test$lettre$chiffre");
    le format que tu vois là est le format par défaut quand time écrit dans un fichier, pour le changer tu peux le préciser dans la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("time -f'real %E \nuser %U \nsys %S ' perl test.pl $lettre $chiffre 2>> test$lettre$chiffre");
    consulte le manuel si tu veux plus d'infos dans le time
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Tout marche niquel
    Merci beaucoup pour ton aide Gardyen.

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Sinon, tu appelle au début de l'exécution la fonction Perl time qui te renvoie le nombre de secondes écoulées depuis la date origine (l'"époque", le 01/1.1970 sur les systèmes Unix). Tu stockes ce nombre. Tu recommences à la fin de l'exécution et la différence entre les deux nombres est la durée d'exécution.

    Suivant le besoin, il existe aussi des modules de profilage de code.

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

Discussions similaires

  1. [Débutant] programme qui appel des scripts VBS
    Par Maxmoon13 dans le forum C#
    Réponses: 1
    Dernier message: 23/07/2013, 10h46
  2. [Débutant] Création d'une application Java qui appelle des scripts Perl
    Par dark_angel91 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 31/05/2011, 19h31
  3. Debutant:création d'une application java qui appelle des scripts perl
    Par dark_angel91 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 30/05/2011, 07h04
  4. un script shell qui appel un autre
    Par nina08 dans le forum Linux
    Réponses: 22
    Dernier message: 19/11/2009, 01h20
  5. Script shell qui appelle méthode Java ?
    Par babyboy dans le forum Linux
    Réponses: 3
    Dernier message: 17/08/2007, 01h45

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