#! /usr/local/bin/perl #! /usr/bin/perl ## ## 入力された IP アドレスのシリアル番号を返す :D ## ## たとえば 192.168.100.122 を通し番号に換算すると 3,232,261,242 になる、 ## とかいうのがわかる ## $| = 1; print '>'; while(<>) { s/^[ \t\r\n]+//; s/[ \t\r\n]+$//; last if(/^$/); s/[\. \t]+/ /g; @ips = split; &proc(@ips); print '>'; } exit; sub proc { local(@nums) = @_; local($ip, $ip1, $ip2, $ip3); foreach $i ( @nums ) { $ip *= 256; $ip += $i; } printf("IP serial number: %u (%x)\n", $ip, $ip); $ip1 = $ip; foreach $i ( 0 .. 2 ) { $ip2 = $ip1/256; $ip3 = $ip1%256; printf("%u(%x), %u(%x)\n", $ip2, $ip2, $ip3, $ip3); $ip1 = $ip2; } }