Сейчас мы рассмотрим строковые функции. С помощью этих функций вы можете определить длину строки, произвести поиск подстроки или поменять местами символы в строке. Ниже приведены строковые функции, имеющиеся в Perl:
chomp (string), chomp (array) использует значение специальной переменной $/ для последнего символа строки string или каждого элемента массива array. Последний символ будет удален только в том случае, если он равен значению переменой $/.
chop (string), chop (array) делает то же самое, что и предыдущая функция, но в качестве результата эта функция возвращает сам удаленный символ.
chr (number) возвращает символ из ASCII-таблицы с кодом number. Например, chr(65) возвратит символ 'A'.
crypt (string1, string2) шифрует строку string1. Perl не предоставляет механизмов для дешифрования строки.
index (string, substring, position) возвращает позицию первого вхождения строки substring в строке string считая от позиции position. Если параметр position не задан, то сравнение строк ведется от начала строки string.
join (string, array) возвращает строку, в которой все элементы массива array соединены строкой string. Например, join (">>", ("a","b","c")) возвратит строку "a>>b>>c";
lc (string) возвратит строку, где все символы прописные. Например, lc ("ABCD") возвратит "abcd"
lcfirst (string) возвратит строку, в которой только первый символ прописной. Например, lcfirst ("ABCD") возвратит "aBCD"
length (string) возвращает длину строки.
rindex (string, substring, position) то же, что и index (смотрите выше), но возвращает позицию последнего вхождения.
split (pattern, string, limit) разбивает строку string на части, принимая за границу значение параметра pattern. Например, ($a, $b, $c) = split ("::", "1::2::3") присвоит переменным $a, $b, $c значения "1", "2", "3" соответственно. Если же результат используется в скалярном контексте, то функция возвращает количество найденных таким образом элементов.
substr (string, offset, length) возвращает часть строки string, как определено параметрами offset (смещение) и length (длина). Если length не указан, возвращается все, что находится на промежутке от offset до конца string. Отрицательные значения offset могут использоваться для сканирования с правого края строки string.
uc (string) то же самое, что и lc (смотрите выше), но все символы заглавные.
ucfirst (string) то же самое, что lcfirst (смотрите выше), но символ заглавный.
В случае, если Perl встречает число там, где ожидает встретить строку, он просто преобразовывает число в строку, освобождая вас от дополнительной работы.
Некоторые функции из приведенных выше используют для своей работы специальную переменную $_, о которой вы узнаете в главе 9 "Файлы" и главе 12 "Использование специальных переменных".
Следующие несколько примеров демонстрируют применение некоторых строковых функций. После того, как вы поймете работу нескольких строковых функций, вы сможете правильно применять и остальные.
Пример: изменение значения строки
Очень часто вам, возможно, понадобится
изменять части строк - как правило, где-то в
середине строки. Когда перед вами станет
такая задача, вы можете воспользоваться
функцией substr(). Обычно эта функция
используется для получения строки из
существующей строки - на основании трех
параметров - исходной строки, смещения,
которое есть начало новой строки и длины
новой строки.
$firstVar = substr("0123BBB789", 4, 3);
print("firstVar = $firstVar\n");
Программа напечатает:
firstVar = BBB
Функция возвратит строку, начиная с 5-го
символа, и длиной в 3 символа.
Применение данной функции становится
гораздо более интересным, когда вы
используете ее слева от оператора
присваивания:
$firstVar = "0123BBB789";
substr($firstVar, 4, 3) = "AAA";
print("firstVar = $firstVar\n");
Программа напечатает:
firstVar = 0123AAA789
Пример: поиск строки
Другая интересная задача, которую вы можете решить с помощью строковх функций - это поиск заданной подстроки в строке. Например, у вас есть полное имя файла, включая путь: "C:\\WINDOWS \\TEMP\\WSREWE.DAT", а вам нужно получить из него только имя файла. Вы можете это сделать, найдя последний обратный слеш (символ '\'), а за тем применив функцию substr().
Помните, что в строке для указания символа
'\' вы должны использовать двойной символ '\\'.
Если вы подзабыли материал, обратитесь к
главе 2 "Числовые и стринговые литералы".
$pathName = "C:\\WINDOWS\\TEMP\\WSREWE.DAT";
$position = rindex($pathName, "\\") + 1;
$fileName = substr($pathName, $position);
print("$fileName\n");
Программа напечатает:
WSREWE.DAT
Мы не указали здесь третий параметр функции
substr() - length, - это потому что нам нужно взять
подстроку до конца исходной строки.