首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何转换Perl中的MAC地址格式?

如何转换Perl中的MAC地址格式?
EN

Stack Overflow用户
提问于 2022-07-05 18:12:52
回答 3查看 129关注 0票数 1

我必须创建一个Perl脚本,它以HHHH.HHHH.HHHH格式获得一个MAC地址,其中"H“是一个十六进制数字,并给我一个HH:HH的输出。如何在Perl中进行此转换?

下面是一个输入文本示例:

代码语言:javascript
复制
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

下面是我的脚本片段,我在这里处理MAC地址数据:

代码语言:javascript
复制
if ($linha =~m/^Chassis ID/){
            my($chassisID) = $linha=~ /:(.*)/g;
            $lldpInfo{$localInt}{"chassisID"} = $chassisID;
            print $chassisID."\n";  
}

在这种情况下,我必须处理变量$chassisID

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-07-05 18:23:33

一种快速而肮脏的方法可以是拆分.上的字符串,将条目(假设每个字符为4个字符)映射到由:分隔的两个字符段中,然后用:分隔符重新加入结果。

代码语言:javascript
复制
my $chassisID = '4cf5.5b8b.f860';
# Transform the format:
$chassisID = join(':', map { substr($_, 0, 2).':'.substr($_, 2, 2) } split('\.', $chassisID));
print "ChassisID in MAC address format: $chassisID\n";

输出:

代码语言:javascript
复制
ChassisID in MAC address format: 4c:f5:5b:8b:f8:60
票数 2
EN

Stack Overflow用户

发布于 2022-07-05 18:33:55

您可以使用CPAN中的NetAddr::MAC模块以多种不同的方式解析和格式化MAC地址:

代码语言:javascript
复制
#!/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
票数 6
EN

Stack Overflow用户

发布于 2022-07-05 20:07:33

代码语言:javascript
复制
my $out = join ":", unpack "(H2)*", pack "n*", map hex, split /\./, $in;

如果不能省略前导零,可以使用以下较短的解决方案:

代码语言:javascript
复制
my $out = $in =~ s/\.//rg =~ s/..\K/:/rg;
代码语言:javascript
复制
s/\.//g, s/..\K/:/g for $s;                  # In-place
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72873835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档