我必须制作一个 Perl 脚本,以 HHHH.HHHH.HHHH 格式获取 MAC 地址,其中“H”是十六进制数字,并给出 HH:HH:HH:HH:HH:HH 的输出。我怎样才能在 Perl 中进行这种转换?
这是一个输入文本示例:
System Information
Local port :xgei-1/6/1
Group MAC address :Nearest Bridge
Neighbor index :1
Chassis type :MAC address
Chassis ID :4cf5.5b8b.f860
Port ID type :Interface name
Port ID :XGigabitEthernet0/0/1
Time to live :109
Port description :ZTE-2-C650-172.24.102.77
System name :main-link-lab-cdi-sw-01
Run Code Online (Sandbox Code Playgroud)
这是我处理 MAC 地址数据的脚本片段:
if ($linha =~m/^Chassis ID/){
my($chassisID) = $linha=~ /:(.*)/g;
$lldpInfo{$localInt}{"chassisID"} = $chassisID;
print $chassisID."\n";
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我必须处理变量$chassisID。
您可以使用CPAN 中的NetAddr::MAC模块以多种不同的方式解析和格式化 MAC 地址:
#!/usr/bin/env perl
use warnings;
use strict;
use feature qw/say/;
use NetAddr::MAC;
my $macaddr = '4cf5.5b8b.f860';
my $mac = NetAddr::MAC->new($macaddr);
say $mac->as_ieee; # 4c:f5:5b:8b:f8:60
Run Code Online (Sandbox Code Playgroud)