in reply to Re^2: Insert colons into a MAC address
in thread Insert colons into a MAC address
Well, I think I'll choose this:
$mac =~ s/([0-9a-fA-F]{2})\B/$1:/g;
which can be also spelled as:
$mac =~ s/(\p{Hex}{2})\B/$1:/g;
The [:xdigit:] class does not work (I don't know why).
@Not_a_Number: probably there isn't a reason to prefer a regex over 'unpack' or the use of a module, in this case, since this regex is not really more readable than other methods.
Anyway I'm more familiar with regexes than with unpack or the Net::MAC module, so there is a chanche that I will recognize and understand that sooner when looking again at my code in the future.
As for modules, I often avoid (or completely overlook) them, because I usually have little or no control on the systems I work onto (so installing a module can be a tricky or impossible task). I see that "use a module" vs "reinvent the wheel" is an ever discussed problem. I'm on the "reinvent the wheel" side, but it's not my fault :)
Thanks to all, bye.
Edit:
jut in case someone come here in the future.
[:xdigit:]
actually works:
$mac =~ s/([[:xdigit:]]{2})\B/$1:/g;
I just didn't put enough square brackets. [:xdigit:] is equivalent to [:xdigt] (literally), while [[:xdigit:]] is equivalent to [0-9a-fA-F]. Reading the f. manual helps as usual :)
$mac =~ s/([0-9a-fA-F]{2})\B/$1:/g;
which can be also spelled as:
$mac =~ s/(\p{Hex}{2})\B/$1:/g;
The [:xdigit:] class does not work (I don't know why).
@Not_a_Number: probably there isn't a reason to prefer a regex over 'unpack' or the use of a module, in this case, since this regex is not really more readable than other methods.
Anyway I'm more familiar with regexes than with unpack or the Net::MAC module, so there is a chanche that I will recognize and understand that sooner when looking again at my code in the future.
As for modules, I often avoid (or completely overlook) them, because I usually have little or no control on the systems I work onto (so installing a module can be a tricky or impossible task). I see that "use a module" vs "reinvent the wheel" is an ever discussed problem. I'm on the "reinvent the wheel" side, but it's not my fault :)
Thanks to all, bye.
Edit:
jut in case someone come here in the future.
[:xdigit:]
actually works:
$mac =~ s/([[:xdigit:]]{2})\B/$1:/g;
I just didn't put enough square brackets. [:xdigit:] is equivalent to [:xdigt] (literally), while [[:xdigit:]] is equivalent to [0-9a-fA-F]. Reading the f. manual helps as usual :)
|
---|
In Section
Seekers of Perl Wisdom