Сорри за детский вопрос, но чёто не получается:
Есть список mac-адресов вида
1a2b3c4d5e6g
5k7ld93u8s6b
0h8dd35lj68g
...
подскажите плиз как грамотно разделить в perl каждые 2 символа, чтоб было типа 1a-2b-3c-4d-5e-6g и т.д.
Perl+Разделение строки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- проходил мимо
- Сообщения: 1
- Зарегистрирован: 2012-07-10 10:40:30
- Контактная информация:
Re: Perl+Разделение строки
Насколько я помню математику, в 16-ричном мак-адресе не могут присутствовать символы g, s, u...Сорри за детский вопрос, но чёто не получается:
Есть список mac-адресов вида
1a2b3c4d5e6g
5k7ld93u8s6b
0h8dd35lj68g
А для шестнадцатиричных строк фиксированной длины, преобразование выглядит примерно так:
Код: Выделить всё
#! /usr/bin/perl
use strict;
use warnings;
my $mac = '1a2b3c4d5e6f';
if (length $mac == 11) {
$mac = '0' . $mac
}
elsif (length $mac != 12) {
die 'Bad mac-address';
}
$mac =~ m/^([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
my @mac = ($1, $2, $3, $4, $5, $6);
print(join '-', @mac);
print "\n";
exit;
- ed_butcher
- мл. сержант
- Сообщения: 70
- Зарегистрирован: 2009-04-17 16:00:53
- Откуда: Харьков-Киев
Re: Perl+Разделение строки
Спасибо огромное! Список маков набрасал с потолка, просто чтоб показать формат записи(буквы, цифры). Думал что есть какая-то функция, которая режет по критерию(н-р, через каждые 2 символа), но получается что только регулярное выражение, что не совсем удобно если строка длинная.
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Perl+Разделение строки
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
-
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
- Контактная информация:
Re: Perl+Разделение строки
для особо ленивых
выдаст: 08.20.00.ab.cd.ef
Код: Выделить всё
#!/usr/bin/perl
use Net::MAC;
my $mac = Net::MAC->new('mac' => '082000ABCDEF');
my $cmac = $mac->convert('bit_group' => 8, 'delimiter' => '.');
print $cmac->get_mac();
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.