Hi Vincent,
On Mon, 20 Jul 2015 09:18:33 +0200
Vincent Lequertier <[email protected]> wrote:
> Thank you for the help, but this does not work. We needa pass the ip
> addresses to the sorting function, because actually the keys of the hash
> are the dates
>
> $VAR1 = '[15/Jul/2015:10:30:03 +0200]';
> $VAR2 = {
> 'ip' => 'xxx.xxx.xxx.xxx',
> 'action' => 'GET xxx'
> };
>
> The workaround I found is to loop over the hash, push an array with the
> ip addresses, and sort them, like this :
>
> sub sort_by_ip {
> my @ip;
> for my $key (keys %hash) {
> push @ip, $hash{$key}{ip};
> }
Why not do “push @ip, [$key => $hash{$key}{$ip}];” here instead and then sort
based on the IPs, extract the keys and use foreach?
> my @ip_sorted = map { $_->[0] }
> sort { $a->[1] <=> $b->[1] }
> map { [$_, int sprintf("%03.f%03.f%03.f%03.f",
> split(/\./, $_))] } @ip;
> }
>
> So I'm looking for a way to iterate through the hash in the order of my
> array.
>
> Regards
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
List of Text Processing Tools - http://shlom.in/text-proc
“Publish or Perish” → “Life or Death”
— http://unarmed.shlomifish.org/2615.html
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/