Функции для работы со строками
Функция:
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 отсутствует, вместо него используется переменная $_.