Bonjour,


Je n'arrive toujours pas à faire des tris dans les tableau

Voici une script qui utilise la fonction CPAN Proc:rocessTable dont j'ai demandé de me donner le temps d'utilisation de processus chrome :
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
#!/usr/bin/perl
use strict;
use warnings;
use Proc::ProcessTable;
use POSIX ;
 
#Temps epoc Local
my $times = mktime (localtime);
 
 
my $t = new Proc::ProcessTable;
foreach my $p ( @{$t->table() } ){
        if ( $p->cmndline() =~ /chrome/ )   {
# association de l'uid avec le login
                my $login= getpwuid $p->uid();
                my $pid = $p->pid() ;
# calcul du temps d'utilisation
                my $diff_times=$times - $p->start() ;
                my $jours=int($diff_times / 86400 ) ;
                my $heures=int($diff_times / 3600 ) ;
                my $minutes=int(($diff_times % 3600) / 60);
                my $secondes=int((($diff_times % 3600) % 60)); 
# Concaténation du tableau                 
		my @tab = ($login, $diff_times, $pid, $jours, $heures, $minutes, $secondes ); 
 		print "@tab\n";
		}
}
Cela me donne le tableau suivant :
user 2388 13654 0 0 39 48
user 2388 13659 0 0 39 46
user 2388 13660 0 0 39 45
user 2388 13662 0 0 39 40
user 2388 13666 0 0 39 36

J'aimerais que le processus le plus jeunes apparaisse en premier.
J'ai essayé la fonction sort de différente manière avec cette fonction par exemple :
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
 
..../...
my @tab = ($login, $diff_times, $pid, $jours, $heures, $minutes, $secondes ); 
 		@tab = sort bydiff_times @tab;
		}
} 
 
 
 
sub bydiff_times {
  my $a1 = $$a[2];
  my $b1 = $$b[2];
  print "$a1\n";
  $a1 <=> $b1;
}
et j'ai eu le message d'erreur suivant :
Can't use string ("user) as an ARRAY ref while "strict refs" in use at ./Monitor_Chrome.pl line 27.

Merci de votre aide.