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 :

sortie du script sur l'écran et dans un fichier


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 sortie du script sur l'écran et dans un fichier
    Bonjour,

    J'aimerai que le script suivant me donne le résultat à l'écran et me l'écrive dans un fichier :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Term::ANSIColor;
    use List::Util qw( max );
     
    my %informations;
    my $max_sec = 0;
    my $fichier = $ARGV[0];
    #Test
     if ( $fichier eq "") {
    	print colored ['red on_black'], 'syntaxe : Tri_matlab.pl nom_de_fichier', "\n" ;
    	exit 1 ;
    } 
    if (defined($ARGV[1])) {
    	print colored ['red on_black'], 'This script can not load one more one file', "\n"; 
    	exit 1 ;
    }
     
    my @rootName = split (/[.]/, $fichier);
    my $CSVFILE="$rootName[0].csv";
     
    open (F, $fichier) || die "Impossible de lire le fichier : $fichier\n";
    while ( my $ligne = <F> ) {
    	chomp $ligne;
    # Si la ligne contient Flag time :, on mémorise les informations nécessaires et supprime le flag
    	if ( $ligne =~ s{^Flag time\s+:\s+}{}i ) {
    		my ( $pid, $temps, $login, $data2, $pourcentage ) = split /\s+/, $ligne;
    		my ( $heure, $minute, $seconde ) = split /:/, $temps;
    		my $time = ( $heure * 3600 ) + ( $minute * 60 ) + $seconde;
    		# on prend l'index sur le PID avec la valeur max temps
                    if ( ! $informations{$pid} ) { $max_sec = 0; }
    			#grace à l fonction max on prend la valeur max par rapport à $time
    			$max_sec = max($max_sec, $time);
    			$informations{$pid}{temps} = $max_sec;
    			$informations{$pid}{login} = $login;
    		}
    }
    close (F);
    # Affichage des informations mises en mémoire avec Tri 
    open ( REPORTFILE,">" , $CSVFILE );
    my @t=qw/STDOUT REPORTFILE/;
    for (@t){
    	foreach my $unpid ( sort { $informations{$a}{temps} <=> $informations{$b} {temps} } keys %informations ) {
    		my $sec   = $informations{$unpid}{temps};
    		my $login = $informations{$unpid}{login};
    		print "PID : $unpid Temps: $sec Login $login\n";
    # 		sprintf( 'PID:%7 Temps: %5 Login: %10', $unpid , $sec, $login) ) ;
    	}
    }
    close REPORTFILE
    Pour l'instant il ne fait qu'afficher son rapport en double à l’écran et me crée un fichier vide.....

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Term::ANSIColor;
    use List::Util qw( max );
     
    my %informations;
    my $max_sec = 0;
    my $fichier = $ARGV[0];
     
    #Test
    if ( $fichier eq "" ) {
      print colored ['red on_black'], 'syntaxe : Tri_matlab.pl nom_de_fichier', "\n";
      exit 1;
    }
    if ( defined( $ARGV[1] ) ) {
      print colored ['red on_black'], 'This script can not load one more one file', "\n";
      exit 1;
    }
     
    my @rootName = split( /[.]/, $fichier );
    my $CSVFILE = "$rootName[0].csv";
     
    open F, '<', $fichier || die "Impossible de lire le fichier : $fichier\n";
    while ( my $ligne = <F> ) {
      chomp $ligne;
     
      # Si la ligne contient Flag time :, on mémorise les informations nécessaires et supprime le flag
      if ( $ligne =~ s{^Flag time\s+:\s+}{}i ) {
        my ( $pid, $temps, $login, $data2, $pourcentage ) = split /\s+/, $ligne;
        my ( $heure, $minute, $seconde ) = split /:/, $temps;
        my $time = ( $heure * 3600 ) + ( $minute * 60 ) + $seconde;
     
        # on prend l'index sur le PID avec la valeur max temps
        if ( !$informations{$pid} ) { $max_sec = 0; }
     
        #grace à l fonction max on prend la valeur max par rapport à $time
        $max_sec = max( $max_sec, $time );
        $informations{$pid}{temps} = $max_sec;
        $informations{$pid}{login} = $login;
      }
    }
    close(F);
     
    # Affichage des informations mises en mémoire avec Tri
    open REPORTFILE, '>', $CSVFILE;
    foreach my $unpid ( sort { $informations{$a}{temps} <=> $informations{$b}{temps} } keys %informations ) {
      my $sec   = $informations{$unpid}{temps};
      my $login = $informations{$unpid}{login};
      print "PID : $unpid Temps: $sec Login $login\n";
      print REPORTFILE "PID : $unpid Temps: $sec Login $login\n";
     
      # 		sprintf( 'PID:%7 Temps: %5 Login: %10', $unpid , $sec, $login) ) ;
    }
    close REPORTFILE

  3. #3
    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
    Merci

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

Discussions similaires

  1. Résultat cmd sur l'écrans et dans un fichier
    Par bennyben77 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 21/01/2010, 15h19
  2. Script pour insérer une ligne dans un fichier csv
    Par StéphanieB. dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 05/01/2010, 11h19
  3. Script Batch : Variable d'environnement dans un fichier "ordinaire"
    Par falcon dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 06/05/2008, 15h54
  4. [VBA] Menu qui pointe sur une macro contenue dans un fichier xla protégé
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 14h34
  5. Script CGI(impossible d'ecrire dans un fichier)
    Par matt8-5 dans le forum Web
    Réponses: 3
    Dernier message: 16/06/2006, 10h47

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