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

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

Функция:

pos()
pos [$SCALAR]

…возвращает позицию, в которой завершился последний глобальный поиск $scALAR=~m/…/g, осуществленный в строке, задаваемой переменной $SCALAR. Возвращаемое значение равно числу length($') + length($&). Следующий глобальный поиск m/…/g в данной строке начнется именно с этой позиции.

Если аргумент $ SCALAR отсутствует, возвращается позиция завершения последнего глобального поиска, осуществленного в строке $_.

$words = "one two three four"; while ($words =~ m/\w+/g) {
print "pos=",pos($words)," length(\$~)=",length($'),
" length(\$s)=",length($s),"\n"; }

В результате выполнения данного скрипта будут выведены номера позиций, соответствующих окончаниям слов в строке $words:

pos=3 length($~}=0 length($&)=3
pos=7 length{$')=4 length($&)=3
pos=13 length($~)=8 length($&)=5
pos=18 length($')=14 length($&)=4

Функцию pos () можно использовать в левой части операции присваивания для изменения начальной позиции следующего поиска:

I изменение начальной позиции для последующего поиска
$words = "one two three four";
pos $words = 4;
while ($words =~ m/\w+/g) {
print pos $words, "\n"; }

В последнем случае поиск слов начнется со второго слова, и будут выведены номера позиций 7, 13 и 18.

Функция:

quotemeta () quotemeta [EXPR]

…возвращает строку EXPR, в которой все символы, кроме алфавитно-цифровых символов и символа подчеркивания "_", экранированы символом "\". Например, в результате выполнения:

print quotemeta " °", "\n";

…будет выведена строка:

\*\*\*\*\*

Если аргумент EXPR отсутствует, вместо него используется переменная $_.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.