私は2001:db8::1
のようなアドレスをスカラーに持っていて、拡張形式の2001:0db8:0000:0000:0000:0000:0000:0001
を取得したいと考えています。メインのPerlパッケージは、すでに広がっている/usr/lib/perl5/...
の森林にありますか?そうでない場合は、誰かがこれを行ういくつかの行を持っていますか?Perl IPv6アドレスの拡張/解析
4
A
答えて
9
CPANには、必要なことができるNet::IP
があります。ここで
は、アクションにあなたにそれを示す転写産物だ:それは簡単かつ強力だから
$ cat qq.pl
use Net::IP;
$ip = new Net::IP ('2001:db8::1');
print $ip->ip() . "\n";
$ perl qq.pl
2001:0db8:0000:0000:0000:0000:0000:0001
2
Net::IP
は、間違いなく行くための素晴らしい方法です。しかし、それらのトンを解析しようとしている場合は、オブジェクトからinet_pton
を使用することを検討してください。Net::IP
よりも10-20倍高速です。オブジェクトが事前に作成されています。そして4ish倍速くip_expand_address
バージョンより:私のために
use Net::IP;
use Time::HiRes qw(gettimeofday tv_interval);
use Socket qw(inet_pton AF_INET6);
use bignum;
use strict;
# bootstrap
my $addr = "2001:db8::1";
my $maxcount = 10000;
my $ip = new Net::IP($addr);
my ($t0, $t1);
my $res;
# test Net::IP
$t0 = [gettimeofday()];
for (my $i = 0; $i < $maxcount; $i++) {
$ip->set($addr);
$res = $ip->ip();
}
print "Net::IP elapsed: " . tv_interval($t0) . "\n";
print "Net::IP Result: $res\n";
# test non-object version
$t0 = [gettimeofday()];
for (my $i = 0; $i < $maxcount; $i++) {
$res = Net::IP::ip_expand_address('2001:db8::1', 6);
}
print "ip_expand elapsed: " . tv_interval($t0) . "\n";
print "ip_expand Result: $res\n";
# test inet_pton
$t0 = [gettimeofday()];
for (my $i = 0; $i < $maxcount; $i++) {
$res = join(":", unpack("H4H4H4H4H4H4H4H4",inet_pton(AF_INET6, $addr)));
}
print "inet_pton elapsed: " . tv_interval($t0) . "\n";
print "inet_pton result: " . $res . "\n";
はランダムなマシン上でこれを実行するには、生産:
Net::IP elapsed: 2.059268
Net::IP Result: 2001:0db8:0000:0000:0000:0000:0000:0001
ip_expand elapsed: 0.482405
ip_expand Result: 2001:0db8:0000:0000:0000:0000:0000:0001
inet_pton elapsed: 0.132578
inet_pton result: 2001:0db8:0000:0000:0000:0000:0000:0001
関連する問題
- 1. CでIPv6アドレスを拡張するには
- 2. pythonを使ってipv6アドレスを拡張するには?
- 3. Powershellの最初のアドレスと最後のアドレスにIPv6 CIDRを解析する
- 4. Firebase拡張パッシブ通知の解析
- 5. Chrome拡張機能 - Gmailメッセージの解析
- 6. アドレス解析
- 7. Excel:アドレスの解析
- 8. Firefox拡張機能:拡張ストレージのJSONデータを解析できません
- 9. perlは画像と拡張
- 10. Perlのビット列の解析
- 11. SQLスクリプトのPerl解析
- 12. sedとMACアドレスの解析
- 13. 無効なIPv6アドレス
- 14. スクリプトタグを解析するためのFirefox拡張機能のビルド
- 15. Pythonの構文解析先頭にあるASCII拡張文字
- 16. ハッシュを使った拡張機能のmime.typesを解析する
- 17. データ、セキュリティ証明書X509v3の拡張を解析する
- 18. "証明書ポリシー"の拡張子を解析する
- 19. PHP IMAP拡張のようなホスト情報を解析する
- 20. htmlのスニペットを拡張で解析する
- 21. Firefox拡張機能のIPアドレス検索
- 22. Java国際アドレス解析
- 23. IPv6アドレスへのSNMPトラップ
- 24. IPv6アドレスのSNMP pingサポート
- 25. IQueryableを拡張してプロパティを解析する
- 26. 拡張子に応じてファイルを解析する方法
- 27. CakePHP 2.0 RSSエラー(拡張機能は解析されません)
- 28. 拡張メソッドの解決
- 29. IPv6の見解
- 30. IPv6アドレスからCIDRブロックへ
と 'ネット:: IP'がpure-perlのです。私は純粋なperlモジュールが大好きです。 –
'$ ip = Net :: IP :: ip_expand_address( '2001:db8 :: 1'、6);'私のために、余分なオブジェクトは必要ありません。 – user562374