2009年9月23日

[linux-users:108314] Re: IP

おはようございます、大里です。

> On Sun, 20 Sep 2009 17:58:56 +0900
> 早間義博 <yossi@xxxxx> wrote:
> echo $IP|perl -e '$ip=<stdin>;chop;@ips=split("\\.",$ip);
> $ipvl=pack("CCCC",$ips[0],$ips[1],$ips[2],$ips[3]);
> $ipvn=unpack("N",$ipvl);

ご存じとは思いますが、Socket::inet_aton を呼ぶのが嫌じゃなければ
unpack("H*", inet_aton(IPアドレスの文字列))
だけでで済みますね。

$ipaddrStr="192.168.1.100";
# Soket::inet_aton を使いたくなければ
print("$ipaddrStr をHEXに変換 ", join(".",map(sprintf("%02x", $_), split(/\./, $ipaddrStr))), "\n");
print("$ipaddrStr をBINに変換 ", join(".",map(sprintf("%08b", $_), split(/\./, $ipaddrStr))), "\n");
# Soket::inet_aton を使うならば
use Socket;
print("$ipaddrStr をHEXに変換 ", join(".", unpack("H2H2H2H2", inet_aton($ipaddrStr))), "\n");
print("$ipaddrStr をBINに変換 ", join(".", unpack("B8B8B8B8", inet_aton($ipaddrStr))), "\n");


> On Sun, 20 Sep 2009 21:23:53 +0900
> dezawa <dezawa@xxxxx> wrote:
> 元ネタは、Windows の cmd 通称DOS窓での話の様に思えるのですが、気のせいでしょうか

大丈夫、ActivePerl でもそのまま動きます ;-)

# CMD.EXE だけで強引にできるかどうか?分かりません…
# bash なら内部コマンドだけでもできそうな気はする…

--
; kazz@xxxxx (大里和朗)

投稿者 xml-rpc : 2009年9月23日 03:57
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/88804
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。