Perl: преобразование строки в число (там где оно совсем не нужно)

Модератор: Модераторы разделов

Obscurus
Сообщения: 188

Perl: преобразование строки в число

Сообщение Obscurus »

В скрипте из эксель-файла вытягиваются значения ячеек (в текстовом файле с этим, кажется, проще). Они содержат числовой код, но должны обрабатываться как строки, потому что в некоторых есть значения числа с нулём впереди. Он очень важный, и терять его никак нельзя. То есть, вместо строки 050 в переменной оказывается число 50. Есть ли способ это порешить, или перл делает так всегда и со всеми строками?
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Perl: преобразование строки в число

Сообщение allez »

Perl сделает то, что вы от него потребуете, нужно только правильно потребовать. :)

Присвоение переменной строкового значения

$ perl -e '$a="050"; print "$a\n"' 050


P. S. В Perl тип скалярных переменных определяется динамически из контекста. Поэтому, если вы хотите, чтобы в переменную было записано строковое значение, а не число, то нужно воспользоваться кавычками или операторами q()/qq().
Спасибо сказали:
Obscurus
Сообщения: 188

Re: Perl: преобразование строки в число

Сообщение Obscurus »

Спасибо за совет, дело оказалось не в самой переменной - просто в глубине спрятался sprintf, который эти нули и ел ))
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Perl: преобразование строки в число

Сообщение NickLion »

Obscurus писал(а):
09.07.2010 11:02
Спасибо за совет, дело оказалось не в самой переменной - просто в глубине спрятался sprintf, который эти нули и ел ))

sprintf никого не съест, если указывать %s, а %d - тут да, ему сказали понимать как число, оно так и будет ;)
Спасибо сказали: