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 :
Cela me donne le tableau suivant :
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"; } }
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 :
et j'ai eu le message d'erreur suivant :
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; }
Can't use string ("user) as an ARRAY ref while "strict refs" in use at ./Monitor_Chrome.pl line 27.
Merci de votre aide.
Partager