这可以在一行中完成吗?

San*_*ing 7 perl

我正在提取MAC地址

my @tmp = split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0";
my $vip = $tmp[3];
Run Code Online (Sandbox Code Playgroud)

但是可以在不使用临时变量的情况下完成吗?

Tot*_*oto 16

是的,它可以:

my $vip = (split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0")[3];
Run Code Online (Sandbox Code Playgroud)


mob*_*mob 13

是的,它可以.

my (undef, undef, undef, $vip) = split / /, "...";
Run Code Online (Sandbox Code Playgroud)


mwp*_*mwp 6

我会推荐这种方法,它在大海捞针的字边界处寻找一个"正确"的MAC地址.如果MAC地址在字符串中移动,它仍然可以工作,如果$vip在此语句后没有定义,则没有找到MAC地址.如果我能澄清任何事情,请告诉我.

my ($vip) = "..." =~ /\b((?:[0-9A-Fa-f]{1,2}[:-]){5}[0-9A-Fa-f]{1,2})\b/;
Run Code Online (Sandbox Code Playgroud)