我有一個地址像標量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
絕對是一個偉大的路要走,因爲它很容易和強大。但是,如果要分析大量的對象,則可以考慮使用Socket
包中的inet_pton
,因爲它比Net::IP
對象版本快10-20倍,即使對象是預創建的也是如此。 ,比ip_expand_address
版本快4ish時間:
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. 解析IPv6地址
- 2. 從url解析ipv6地址
- 3. 如何使用python擴展ipv6地址?
- 4. Python解析主機名與IPv6地址
- 5. 將IPv6回送地址解析到Uri
- 6. 如何從IPv4映射的IPv6地址解析IPv4地址?
- 7. 從inet_pton解包IPv6地址
- 8. 用PHP擴展IPv6地址的快速方法
- 9. dpkt ipv6擴展頭
- 10. 如何禁用DNS中的ipv6地址解析
- 11. 如何用Perl解析IP地址和地址範圍?
- 12. 地址解析
- 13. IPv6解析C
- 14. 在perl的MAC地址到IPv6鏈接本地地址在線轉換
- 15. 代表IPv6地址
- 16. sockaddr和IPv6地址
- 17. IPv6地址範圍
- 18. 地址窗口擴展
- 19. SQL地址解析
- 20. 宏解析地址
- 21. Excel:解析地址
- 22. Python的IPv6字節地址
- 23. Linux IPV6主地址和副地址
- 24. 從PHP Ipv6 CIDR獲取IPv6地址數
- 25. Perl的轉換龍IPv6地址以精簡的符號
- 26. 擴展解析。用戶
- 27. 擴展PHP5不解析XAMPP
- 28. 解析和watchkit擴展
- 29. 擴展方法解析
- 30. 將域名轉換爲Perl中的IPv6地址
和`網:: IP`是純Perl。我喜歡純perl模塊。 – 2011-01-26 03:32:31