Perlコーディング初心者質問スレ Part 55
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0888nobodyさん
2007/09/02(日) 00:21:59ID:???my $ipdec = 0; # 10進に変換された IP
my $basedec = 256 * 256 * 256 * 256; # ベースとなる値
for(my $i = 0; $i < 4; $i++){
$basedec = $basedec / 256;
$ipdec += $basedec * $quadip[$i];
}
これで $ipdec に10進数にされた IP アドレスが入るので、同じように公開されてる IP アドレスの範囲も10進数に変換して
その範囲内に収まってるかどうかで確認できる。
0889nobodyさん
2007/09/02(日) 00:23:50ID:???## IP の範囲やサブネットから IP の最小値と最大値を10進数で返す
sub getipminmax{
my($ip) = $_[0] || "";
my(@retip) = (0, 0);
# $ip に数字、/、- 以外があればエラーリターンする
if($ip =~ /[^\d\.\-\/]/){ return @retip; }
# - か / で分割する
if($ip =~ /\-/){ # IP の範囲
my ($ipaddr1, $ipaddr2) = split(/\-/, $ip);
$retip[0] = &ip2dec($ipaddr1);
$retip[1] = &ip2dec($ipaddr2);
}elsif($ip =~ /\//){ # サブネット
my ($ipaddr, $subnet) = split(/\//, $ip);
my $subnetdec = (2 ** 32) - (2 ** (32 - $subnet));
my $ipaddrstart = &ip2dec($ipaddr) & $subnetdec;
$retip[0] = $ipaddrstart;
$retip[1] = $ipaddrstart + (2 ** (32 - $subnet)) - 1;
}else{ # 単一の IP
$retip[0] = &ip2dec($ip);
$retip[1] = 0;
}
return @retip;
}
■ このスレッドは過去ログ倉庫に格納されています