我正在提取MAC地址
my @tmp = split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0";
my $vip = $tmp[3];
但是可以在不使用临时变量的情况下完成吗?
答案 0 :(得分:16)
是的,它可以:
my $vip = (split / /, "domain (123.123.123.123) at 00:11:22:33:44:55 [ether] on eth0")[3];
答案 1 :(得分:13)
my (undef, undef, undef, $vip) = split / /, "...";
答案 2 :(得分:6)
我会推荐这种方法,它在大海捞针的字边界处寻找“正确”的MAC地址。如果MAC地址在字符串中移动,它仍然有效,如果在此语句后未定义$vip
,则找不到MAC地址。如果我能澄清任何事情,请告诉我。
my ($vip) = "..." =~ /\b((?:[0-9A-Fa-f]{1,2}[:-]){5}[0-9A-Fa-f]{1,2})\b/;
答案 3 :(得分:4)
您可以使用grep
。这将获取匹配正则表达式的第一个字段。请注意,除非您特别需要多个空格才能生成空字段,否则应使用' '
,而不是/ /
。
my ($vip) = grep /^[0-9:]+$/, split ' ', "...";