Язык программирования Perl | страница 61




> $string_with_meta = '\n \032 \x00 text \t \v "'; $quoted = quotemeta($string_with_meta); # в $quoted будет '\\n\ \\032\ \\x00\ text\ \\t\ \\v\ \"'


В Perl имеется несколько функций преобразования строкового представления числа в числовое значение. Функция hex() возвращает десятичное значение выражения, представленного как шестнадцатиричное число в виде строки:


> $hexadecimal_as_string = '0x2F'; $decimal_number = hex($hexadecimal_as_string); # будет 47


Функция oct() возвращает десятичное значение строкового выражения, представляющего запись восьмеричного числа:


> $octal_as_string = '0777'; $decimal_number = oct($octal_as_string); # будет 511


С помощью oct() можно также преобразовать к десятичному значению двоичное или шестнадцатиричное число, записанное в виде строки:


> $binary_as_string = '0b011001'; $decimal_number = oct($binary_as_string); # будет 25 $hexadecimal_as_string = '0x19'; $decimal_number = oct($hexadecimal_as_string); # будет 25


Ну а строку, содержащую число в десятичной системе счисления, можно преобразовать к числу, поместив ее в числовой контекст:


> $pi_as_string = '3.141592653'; # число Пи в виде строки $circle_length = 2 * $pi_as_string * $radius;


Функция sprintf() возвращает строку, которая сформирована в соответствии с правилами форматирования, заимствованными из языка C: на основе формата преобразования, заданного первым аргументом, в результирующую строку подставляются отформатированные значения из списка остальных аргументов функции. В общем виде вызов этой функции выглядит так: sprintf(ФОРМАТ, СПИСОК АРГУМЕНТОВ). В формате преобразования располагается любой текст, в котором могут присутствовать указания преобразования. Каждое указание начинается с символа процента (%) и заканчивается символом, определяющим преобразование. Основные преобразования приведены в таблице 7.2.

Таблица 7.2. Преобразования в формате sprintf
ПреобразованиеСинонимРезультат преобразованияМнемоника символа
%%Знак процента%
%cСимвол с указанным номером в кодовой таблицеCharacter
%sСтрокаString
%d%iЦелое со знаком в десятичном видеDecimal, Integer
%uЦелое без знака в десятичном видеUnsigned
%bЦелое без знака в двоичном видеBinary
%oЦелое без знака в восьмеричном видеOctal
%x%XЦелое без знака в шестнадцатеричном видеheXadecimal
%e%EЦелое с плавающей точкой в научной нотацииExponential
%f%FЧисло с плавающей точкой в виде десятичной дроби