[Perl] - ip2long() und long2ip

anddie

Well-known member
ID: 171
L
3 Mai 2006
2.267
132
Hallo,

in PHP gibt es ja so schöne Funktionen "ip2long()" und "long2ip()", damit man einfacher mit IP-Adressen rechnen kann.
Für Perl habe ich da jetzt kein passendes Modul gefunden.

Bin ich jetzt zu blöd zum suchen oder gibt es da tatsächlich nichts.

anddie
 
Für was ein Modul?
PHP-Code, den du aber einfach in Perl umschreiben können müsstest:
Code:
$ip = '62.27.41.69';
$parts = explode('.', $ip);
$int= intval($parts[0])*16777216 + intval($parts[1])*65536 + intval($parts[2])*256 + intval($parts[3]);
Ohne Gewähr, aber rauskommen müsste die IP als Unsigned Int, Umwandlung in Long sollte dann kein Problem mehr sein ;)
 
Ich glaub, die Funktionen heissen in Perl inet_ntoa() und inet_aton().
Glaub ich auch, hab bei google gerade nämlich folgendes gefunden:
PHP:
sub ip2long {
    return unpack("l*", pack("l*", unpack("N*", inet_aton(shift))));
}

sub long2ip {
    return inet_ntoa(pack("N*", shift));
}

Jetzt interessiert mich nur noch, was pack und unpack macht.

anddie
 
Glaub ich auch, hab bei google gerade nämlich folgendes gefunden:
PHP:
sub ip2long {
    return unpack("l*", pack("l*", unpack("N*", inet_aton(shift))));
}

sub long2ip {
    return inet_ntoa(pack("N*", shift));
}

Jetzt interessiert mich nur noch, was pack und unpack macht.

anddie

schaust du hier https://de.php.net/pack (jaja ist php... die funktion ist aber der perl funktion nachempfunden)