Язык программирования Perl | страница 60
>
$string = 'Perl 5 нравится программистам.';
$new_string = '6 тоже по';
substr($string, 5, 2) = $new_string;
# в $string будет: 'Perl 6 тоже понравится программистам.'
Подобным же образом можно удалить последние 5 символов строки, заменив их пустой строкой:
>
substr($string, -5) = ''; # удалить последние 5 символов
Сочетая уже известные функции, можно выполнять разные манипуляции с текстовой информацией. Например, чтобы переставить слова в строке, можно воспользоваться функциями split(), reverse() и join() в списочном контексте:
>
$reverse_words = join(' ', reverse(split(' ', $text)));
В Perl есть набор функций для преобразования букв из заглавных в строчные и наоборот. Для правильного преобразования русских букв нужно включить поддержку национальных установок операционной системы с помощью прагмы use locale. Преобразовать текст к нижнему регистру (lower case) можно с помощью функции lc(), которая возвращает значение текстового выражения, преобразованное к строчным буквам:
>
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-последовательности и возвращает строку, где у всех специальных символов отменено их особое значение: для этого перед каждым из них ставится символ обратной косой черты '\'.