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 :

addition de multiplication


Sujet :

Programmation et administration système Perl

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut addition de multiplication
    Bonjour,

    J'applique mon script sur cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Flag time :  4097 0:00:23 user1 MATLAB/42 4.4%
    Flag time :  11365 0:00:42 user2 MATLAB/51 3.3%
    Flag time :  11365 0:01:23 user2 MATLAB/50 1.2%
    Flag time :  11365 0:02:02 user2 MATLAB/50 3.0%
    Flag time :  11365 0:10:07 user2 MATLAB/50 7.1%
    Flag time :  11365 0:16:37 user2 MATLAB/49 7.5%
    Flag time :  11365 0:22:20 user2 MATLAB/49 7.2%
    Flag time :  11365 0:24:29 user2 MATLAB/49 6.0%
    Flag time :  11365 0:28:19 user2 MATLAB/49 1.2%
    Flag time :  11365 0:29:14 user2 MATLAB/51 1.4%
    Flag time :  18715 0:00:56 user1 MATLAB/40 3.1%
    Voici mon script sans erreur :
    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
    #!/usr/bin/perl
    use POSIX;
    use strict;
    use warnings;
     
    open (F, 'MATLAB_s.log');
    my @t = sort <F>;
     
    foreach my $line (@t) {
    print "$line\n";
    my @col=split (/\s+/,$line);
    my $pid=$col[3];
    my @time=split (/:/,$col[4]);
    my $login=$col[5];
    print "$time[0] $time[1] $time[2]\n";
    my $heures=$time[0]*3600;
    my $minutes=$time[1]*60;
    my $sec=$time[2];
    $sec= ($heures  + $minutes  + $sec);
     
    print "PID: $pid Temps :$sec Login: $Login\n";
     
    }
    Je ne comprend pas pourquoi cette version :
    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
    #!/usr/bin/perl
    use POSIX;
    use strict;
    use warnings;
     
    open (F, 'MATLAB_s.log');
    my @t = sort <F>;
     
    foreach my $line (@t) {
    print "$line\n";
    my @col=split (/\s+/,$line);
    my $pid=$col[3];
    my @time=split (/:/,$col[4]);
    my $login=$col[5];
    print "$time[0] $time[1] $time[2]\n";
    my $sec= ($time[0]*3600  + $time[1]*60  + $time[3]);
    print "PID: $pid Temps: $sec Login: $login\n";
    }
    me genère ce message d'erreur :

    Use of uninitialized value in addition (+) at ./tri_col.pl line 21, <F> line 11.

    J'ai essayé d'utiliser des sur plusieurs variable sans succès.
    Merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    mettre en ligne 18 resoud complètement mon soucis......

    Merci

  3. #3
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    L'erreur vient du fait que tu t'es trompé dans l'indice pour récupérer les secondes.

    Dans ta deuxième version tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $sec= ($time[0]*3600  + $time[1]*60  + $time[3]);
    Alors que le tableau time contient 3 valeurs donc le dernier indice est faux (3) et doit être remplacé par 2 (comme dans ton premier exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $sec= ($time[0]*3600  + $time[1]*60  + $time[2]);

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 299
    Points : 137
    Points
    137
    Par défaut
    Oups je l'avais pas vu .......

    Merci Benjou

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

Discussions similaires

  1. Matrices : addition et multiplication
    Par frafria dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 28/01/2014, 23h07
  2. Réponses: 2
    Dernier message: 06/09/2013, 20h52
  3. créer un formulaire et faire une addition ou multiplication
    Par ellocodelcoco dans le forum Langage
    Réponses: 7
    Dernier message: 17/11/2009, 15h37
  4. problème addition et multiplication (BCD)
    Par jocelyn54 dans le forum C
    Réponses: 8
    Dernier message: 08/12/2007, 18h41
  5. Addition et multiplications
    Par Yayel dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/04/2003, 23h15

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