Страница 1 из 1
Perl не видит hex-число в кавычках
Добавлено: 2009-06-14 20:53:44
Ilya Evseev
Как заставить PERL воспринять в виде числа строку '0xff112233' ?
При попытке распечатать её через printf("%x") или "%d" выводится ноль!
Re: Perl не видит hex-число в кавычках
Добавлено: 2009-06-14 21:10:01
zg
Ilya Evseev писал(а):Как заставить PERL воспринять в виде числа строку '0xff112233' ?
какбэ в двойных кавычках нада писать

Re: Perl не видит hex-число в кавычках
Добавлено: 2009-06-15 1:05:48
lerryc
zg писал(а):Ilya Evseev писал(а):Как заставить PERL воспринять в виде числа строку '0xff112233' ?
какбэ в двойных кавычках нада писать

или совсем бэз???
насколько я помню, хотя может и склероз подводит, в одинарных или двойных кавычках - это текстовая строка
а раз хочется
Код: Выделить всё
При попытке распечатать её через printf("%x") или "%d" выводится ноль!
то число должно быть как число, либо (с кавычками) печатать как текстовую строку (%s)
Re: Perl не видит hex-число в кавычках
Добавлено: 2009-06-15 4:16:57
Ilya Evseev
Поясню вопрос.
У меня парсится строка из вывода команды
ifconfig:
Код: Выделить всё
open N, "/sbin/ifconfig $iface_name |";
while(<N>) {
next unless /\s+inet (\d+\.\d+\.\d+\.\d+) netmask (0x[[:xdigit:]]+) broadcast (\d+\.\d+\.\d+\.\d+)$/;
my ($ip, $mask, $bcast) = ($1, $2, $3);
}
В $mask помещается "0xfffffff8", но при попытке использовать её в арифметических операциях
или при печати в цифровом формате она воспринимается как 0 (ноль).

Re: Perl не видит hex-число в кавычках
Добавлено: 2009-06-15 8:53:26
thefree
Код: Выделить всё
open N, "/sbin/ifconfig $iface_name |";
while(<N>) {
next unless /\s+inet (\d+\.\d+\.\d+\.\d+) netmask (0x[[:xdigit:]]+) broadcast (\d+\.\d+\.\d+\.\d+)$/;
my ($ip, $mask, $bcast) = ($1, $2, $3);
printf("%d \n", eval($mask));
}
Re: Perl не видит hex-число в кавычках
Добавлено: 2009-06-15 17:14:04
Ilya Evseev
Точно, eval() рулит. Thanx!