Страница 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' ?
какбэ в двойных кавычках нада писать :pardon:

Re: Perl не видит hex-число в кавычках

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

Код: Выделить всё

При попытке распечатать её через 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 (ноль).
:st:

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!