Иллюстрированный самоучитель по Perl

Функции для работы со строками

Функция:

ucfirst EXPR

…возвращает выражение, полученное из выражения EXPR преобразованием первого символа в прописной.

#!/usr/bin/perl
print "\n Ф-ция uc() преобразует ",$s="upper case"," в ",uc $s;
print "\n Ф-ция ucfirst() преобразует ",$s="uPPER CASE"," в ",ucfirst $s;
print "\n Ф-ция 1с() преобразует ", $s="LOWER CASE"," в ",1с $s;
print "\n ф-ция IcfirstO преобразует ",$s="Lower case, в ",lcfirst $s;

В результате выполнения данного скрипта будут напечатаны строки:

Ф-ция uc() преобразует upper case в UPPER CASE
Ф-ция ucfirst() преобразует UPPER CASE в UPPER CASE
Ф-ция 1с() преобразует LOWER CASE в lower case
Ф-ция Icfirst() преобразует Lower case в lower case

Функция:

join() join EXPR, LIST

…объединяет отдельные строки списка LIST в одну, используя в качестве разделителя строк значение выражения EXPR, и возвращает эту строку.

Функция:

split ()
split [/PATTERN/[, EXPR[, LIMIT]]]

…разбивает строку EXPR на отдельные строки, используя в качестве разделителя образец, задаваемый регулярным выражением PATTERN. В списковом контексте возвращает массив полученных строк, в скалярном контексте – их число. Если функция split о вызывается в скалярном контексте, выделяемые строки помещаются в предопределенный массив @_. Об этом не следует забывать, так как массив §_ обычно используется для передачи параметров в подпрограмму, и обращение к функции split о неявно в скалярном контексте эти параметры уничтожит.

Если присутствует параметр LIMIT, то он задает максимальное количество строк, на которое может быть разбита исходная строка. Отрицательное значение параметра LIMIT трактуется как произвольно большое положительное число.

Если параметр EXPR опущен, разбивается строка $_. Если отсутствует также и параметр PATTERN, то в качестве разделителей полей используются пробельные символы после пропуска всех начальных пробельных символов (что соответствует заданию образца в виде /\s+/). К пробельным символам относятся пробел (space), символ табуляции ЛаЬ), возврат каретки (carriage feturn), символ перевода строки (line feed) и^симврл перевода страницы (form feed).

Замечание
Предопределенная глобальная переменная $_ служит для обозначения используемой по умолчанию области ввода и поиска по образцу. Обычно мы осуществляем ввод при помощи операции "0" ("ромб"). Внутри угловых скобок о может стоять дескриптор файла ввода, например, <STDIN>. Если дескриптор файла отсутствует, то в качестве файлов ввода используются файлы, переданные программе Perl в качестве аргументов командной строки. Пусть, например, программа содержится в файле script .pi.

#!/usr/bin/perl while (<>) {
print; };

Программа вызвана следующим образом:

script.pl filel file2 file3

Тогда операция о будет считывать строки сначала из файла filel, затем из файла file2 и, наконец, из файла file3. Если в командной строке файлы не указаны, то в качестве файла ввода будет использован стандартный ввод.

Только в случае, когда условное выражение оператора while состоит из единственной операции "ромб", вводимое значение автоматически присваивается предопределенной переменной $_. Вот что означают слова о том, что переменная $_ применяется для обозначения используемой по умолчанию области ввода. Аналогично обстоит дело с поиском по образцу.

I!/usr/bin/perl while (<>} {
chop;
print "Число полей во входной строке '$_' равно ", $n=split;
print "ХпВходная строка разбита на строки:\n";
foreach $i (@_) {
print $i. "\n"; }
print "Объединение списка строк в одну строку через ' +':\n";
$joined = join "+", @_;
print "$joined\n"; }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.