Thread Zeilen der Größe nach Ausgeben (10 answers)
Opened by RhoenSprudel at 2015-03-20 18:00

hlubenow
 2015-03-21 16:59
#180275 #180275
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2015-03-20T19:46:26 Raubtier
Was ist daran jetzt schwierig?

Mit meiner ipToInt-Funktion oben:

Deine Funktion ist eine gute Idee. Ich brauchte nur etwas, um Deine Formulierung nachzuvollziehen. Auch verwirrt mich map() immer, aber das ist ja gar nicht in Deiner Funktion. Also, dann sieht das bei mir demnach zusammen so aus (mit Dateieinlesen, damit hatte der OP ja auch noch Schwierigkeiten):
Datei: test
Code: (dl )
1
2
3
Server 1 111.222.333.444
Server 2 222.333.444.555
Server 3 111.333.444.555

Datei: sortip.pl
Code (perl): (dl )
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
#!/usr/bin/perl

use warnings;
use strict;

my $filename = "test";

sub ipToInt {
    my $ip = shift;
    my $sum = 0;
    # Splitting at dots is tricky:
    my @arr = split('\.', $ip);
    my $i;
    foreach $i (@arr) {
        $sum = $sum * 256 + $i;
    }
    return $sum;
}

sub getIPasNumber {
    my $l = shift;
    chomp($l);
    my @a = split(" ", $l);
    return ipToInt($a[2]);
}

my $fh;
open($fh, "<", $filename) or die;
my @a = <$fh>;
close $fh;

my %h;
my $i;
foreach $i (@a) {
    chomp($i);
    my $num = getIPasNumber($i);
    $h{$num} = $i;
}
foreach $i (sort {$b <=> $a} (keys(%h))) {
    print "$h{$i}\n";
}

View full thread Zeilen der Größe nach Ausgeben