Чтение онлайн

на главную

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

use locale; # учитывать национальные установки

$lower_case = lc($text); # преобразовать к маленьким буквам

Функция lcfirst возвращает значение строкового выражения, в котором только первый символ преобразован к нижнему регистру, например:

$first_char_lower = lcfirst($text); # 'Perl' станет 'perl'

К верхнему регистру (upper case) преобразовать текст можно с помощью функции uc, которая возвращает значение символьного выражения, преобразованное к заглавным буквам.

use locale;

$upper_case = uc($text); # преобразовать к большим буквам

Функция ucfirst

возвращает значение строкового выражения, в котором только первый символ преобразован к верхнему регистру. Так, например, можно записать имя собственное с заглавной буквы:

$capitalized = ucfirst($name); # 'ларри' станет 'Ларри'

Встроенная функция crypt выполняет шифрование строки, переданной ей в качестве аргумента, используя второй аргумент в качестве "затравки" (salt) для шифрования:

# незашифрованная строка из $plain шифруется в $crypted

$crypted = crypt($plain, $salt);

Эта функция не имеет парной расшифровывающей функции и чаще всего используется для сравнения открытого текста с существующей зашифрованной строкой, как это делается в следующем примере:

if (crypt($plain, $salt) eq $crypted) {

# открытый текст совпал с зашифрованным

}

Функция quotemeta находит в символьном выражении метасимволы (о которых пойдет речь в следующей лекции) или escape-последовательности и возвращает строку, где у всех специальных символов отменено их особое значение: для этого перед каждым из них ставится символ обратной косой черты '\'.

$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 Число с плавающей точкой в виде десятичной дроби Float
%g %G Число с плавающей точкой в формате %e или %f

Между знаком процента и символом в указании преобразования можно использовать дополнительные параметры преобразования, основные из которых приведены в таблице 7.3.

Таблица 7.3. Параметры преобразования в формате sprintf

Параметр Выполняемое форматирование Пример параметров sprintf Результат форматирования
число Минимальная ширина поля вывода для результата преобразования; если она не задана или меньше ширины значения, то устанавливается равной ширине выводимого значения '<%5s>', 25 < 25>
.число Количество цифр после десятичной точки в дробном числе '<%.5f>', 0.25 <0.25000>
Максимальная ширина поля вывода, до которой усекается длинная строка '<%.5s>', '5' x 10 <55555>
пробел Вывод пробела перед положительным числом '<% d>', 25 '< 25>'
+ Вывод плюса перед положительным числом '<%+d>', 25 '<+25>'
0 Вывод нулей, а не пробелов при выравнивании по правому краю поля '<%05s>', 25 '<00025>'
Выравнивание значения по левому краю поля <%-5s>, 25 '<25 >'
# Вывод перед восьмеричным числом 0, перед шестнадцатеричным числом 0x, перед двоичным числом 0b '<%#x>',25 '<0x19>'

При выполнении sprintf к очередному значению из списка аргументов применяется преобразование, результат которого вставляется в форматирующую строку на место указания преобразования. Например, если шаблон форматирования и аргументы функции sprintf заданы так:

$format = "'%12s' агента <%03d> = '%+-10.2f'";

@list = ('Температура', 7, 36.6);

$formatted_string = sprintf($format, @list);

Поделиться:
Популярные книги

Черный Маг Императора 13

Герда Александр
13. Черный маг императора
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 13

Последняя Арена 4

Греков Сергей
4. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 4

Маяк надежды

Кас Маркус
5. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Маяк надежды

Великий перелом

Ланцов Михаил Алексеевич
2. Фрунзе
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Великий перелом

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Инквизитор Тьмы 2

Шмаков Алексей Семенович
2. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы 2

Мастер Разума V

Кронос Александр
5. Мастер Разума
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Мастер Разума V

Бандит 2

Щепетнов Евгений Владимирович
2. Петр Синельников
Фантастика:
боевая фантастика
5.73
рейтинг книги
Бандит 2

Истребители. Трилогия

Поселягин Владимир Геннадьевич
Фантастика:
альтернативная история
7.30
рейтинг книги
Истребители. Трилогия

Гардемарин Ее Величества. Инкарнация

Уленгов Юрий
1. Гардемарин ее величества
Фантастика:
городское фэнтези
попаданцы
альтернативная история
аниме
фантастика: прочее
5.00
рейтинг книги
Гардемарин Ее Величества. Инкарнация

Падение Твердыни

Распопов Дмитрий Викторович
6. Венецианский купец
Фантастика:
попаданцы
альтернативная история
5.33
рейтинг книги
Падение Твердыни

"Дальние горизонты. Дух". Компиляция. Книги 1-25

Усманов Хайдарали
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Дальние горизонты. Дух. Компиляция. Книги 1-25

Ох уж этот Мин Джин Хо 2

Кронос Александр
2. Мин Джин Хо
Фантастика:
попаданцы
5.00
рейтинг книги
Ох уж этот Мин Джин Хо 2

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6