Преобразование | Синоним | Результат преобразования | Мнемоника символа |
---|---|---|---|
%% | Знак процента | % | |
%c | Символ с указанным номером в кодовой таблице | Character | |
%s | Строка | String | |
%d | %i | Целое со знаком в десятичном виде | Decimal, Integer |
%u | Целое без знака в десятичном виде | Unsigned | |
%b | Целое без знака в двоичном виде | Binary | |
%o | Целое без знака в восьмеричном виде | Octal | |
%x | %X | Целое без знака в шестнадцатеричном виде | heXadecimal |
%e | %E | Целое с плавающей точкой в научной нотации | Exponential |
%f | %F | Число с плавающей точкой в виде десятичной дроби | Float |
%g | %G | Число с плавающей точкой в формате %e или %f |
Между знаком процента и символом в указании преобразования можно использовать дополнительные параметры преобразования, основные из которых приведены в таблице 7.3.
Параметр | Выполняемое форматирование | Пример параметров sprintf() | Результат форматирования |
---|---|---|---|
число | Минимальная ширина поля вывода для результата преобразования; если она не задана или меньше ширины значения, то устанавливается равной ширине выводимого значения | ||
.число | Количество цифр после десятичной точки в дробном числе | ||
Максимальная ширина поля вывода, до которой усекается длинная строка | |||
пробел | Вывод пробела перед положительным числом | ||
Вывод плюса перед положительным числом | |||
Вывод нулей, а не пробелов при выравнивании по правому краю поля | |||
Выравнивание значения по левому краю поля | |||
Вывод перед восьмеричным числом |
При выполнении
$format = "'%12s' агента <%03d> = '%+-10.2f'";
@list = ('Температура', 7, 36.6);
$formatted_string = sprintf($format, @list);
то после выполнения приведенного предложения в переменной
' Температура' агента <007> = '+36.60 '
Преобразования в формате этого примера обозначают следующее:
[x]. %12s - преобразовать аргумент в строку (string) и поместить в поле шириной в 12 символов с выравниванием вправо (т. к. ширина поля положительная);
[x]. %03d - преобразовать аргумент в десятичное целое (decimal) и поместить в поле шириной в 3 цифры с ведущими нулями (т. к. ширина поля задана с ведущим нулем) и выравниванием вправо (поскольку ширина положительная);
[x]. %+-10.2f - преобразовать аргумент в дробное число (float) с явным знаком (т.к. указан +) и поместить в поле шириной в 10 цифр, из которых 2 отводятся на дробную часть, с выравниванием влево (поскольку ширина поля отрицательная).
Функция
$rounded = sprintf("%.3f", 7/3); # в $rounded будет 2.333
Полное описание форматов с самыми разными примерами их употребления можно прочитать в официальной документации:
perldoc -f sprintf
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии