Problem avec la fonction sort
Bonjour,
J ai un petit soucis avec la fonction “sort”. Je dois trier plusieurs evenements par date (Voir code ci dessous). Le problème est que, lorsque deux evenements ont la meme date, la fonction sort ne remonte que le premier des deux. Il me manque donc plusieurs evenments lorsque j affiche le resultat. Existe-t-il un moyen pour que les doublons ne soient pas filtrés?
Code:
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
| my $sorted_detail_transactions = '';
if ( ($status_eps eq OK) && ($status_gprs eq OK) ) {
my %all_events;
my %sorted_events;
my @eps_events = @{$inf->{EventsEPSToDisplay}} ;
my @gprs_events = @{$inf->{EventsGPRSToDisplay}} ;
my $event;
my $s_date;
foreach $event (@eps_events) {
$all_events{$event->{start_date}} = $event;
}
foreach $event (@gprs_events) {
$all_events{$event->{start_date}} = $event;
}
# Because date format is YYYYMMDDHH24MISS, we can sort them as integer
foreach $s_date ( sort { $b <=> $a } keys %all_events) {
my $transaction = $gen->data_event(
$gen->start_date($all_events{$s_date}->{start_date}),
$gen->end_date($all_events{$s_date}->{end_date}),
$gen->apn($all_events{$s_date}->{APN}) ,
$gen->usage_type($all_events{$s_date}->{eps_use_type} || $all_events{$s_date}->{gprs_use_type}),
$gen->area($all_events{$s_date}->{area}),
$gen->volume($all_events{$s_date}->{volume}),
$gen->amount($all_events{$s_date}->{cost_amount}),
);
$sorted_detail_transactions = $sorted_detail_transactions . $transaction ;
}
$result_transaction = $sorted_detail_transactions;
} |
Merci de votre aide