トップページphp
1001コメント318KB

Perlコーディング初心者質問スレ Part 55

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/05/30(水) 11:34:01ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

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 @quadip = split(/\./, $IPADDRESS);
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;
}
■ このスレッドは過去ログ倉庫に格納されています