如何使用 TCL/Perl 规范化 IPv6 ip?

How to normalize IPv6 ip using TCL/Perl?

我想把短格式的IPv6 ip转换成扩展格式。可以说我有 ipv6 ip 作为 fe80::1 到 fe80:0000:0000:0000:0000:0000:0000:0001 和 fe80:0010::1 作为 fe80:0010:0000:0000:0000:0000:0000:0001 等等。你能帮助使用 TCL 或 Perl 或 Python 语言编写脚本吗?

代码应该是动态的,这样无论我给出什么格式,扩展都应该是扩展格式。

对于Python,我建议使用netaddr to deal with IP addresses of any kind. In your case it has the ability to format IPv6 in different forms/dialects

对于您的特定用例,您应该能够做到:

import netaddr

ip = netaddr.IPAddress("fe80::1")

print ip.format(dialect=netaddr.ipv6_verbose)

在 Perl 中,使用 Net::IP 模块:

$ perl -MNet::IP=:PROC -le'print ip_expand_address("fe80::1", 6);'
fe80:0000:0000:0000:0000:0000:0000:0001

在 Tcl 中,使用 ip 包:

% package require ip
1.2.2
% ::ip::normalize fe80::1
fe80:0000:0000:0000:0000:0000:0000:0001

文档:ip