Создание серверных приложений на языке PERL

Урок 20. Операторы для работы




Урок 20. Операторы для работы со строками (продолжение)

Оператор q//

q/строка/;
'строка';


Не интерполируемая строка литералов. Если в качестве разделителя используется одинарная кавычка, ключевое слово "q" можно опускать.

Сами того не зная, Вы используете этот оператор почти с самого первого урока.

print q^Windows 3.11^; # результат: Windows 3.11 print q?Windows 98?; # результат: Windows 98 print 'Windows 2000'; # результат: Windows 2000

Оператор qq//

qq/строка/;

"строка";


Интерполируемая строка. Если в качестве разделителя используется двойная кавычка, ключевое слово "qq" можно опускать.

$var311 = "3.11"; # определяем переменные $var98 = "98"; print qq#Windows $var311#; # результат: Windows 3.11 print qq+Windows $var98+; # релультат: Windows 98 print "Windows 2000"; # результат: Windows 2000

Оператор qx//

qx/строка/;

`строка`;


Сначала строка интерполируется, а потом выполняется как системная команда.

print ""; print `dir`; print "";

Этот код выведет очень много ценной информации ;-) . Не забудьте переключить кодировку браузера в "DOS".

Оператор qw//

qw/строка/;

Возвращает список, элементы которого содержат слова из строки. Т.е. пробелы рассматриваются как символы-разделители.

Следующий код подчеркнет все слова фразы, длиной 7 букв:

@array = qw(Пока толстый сохнет, худой - сдохнет); foreach $i(@array){ if (length($i) == 7){print "$i "} else {print "$i "} }

Оператор Split

split (/шаблон/, выражение, предел);

split (/шаблон/, выражение);

split (/шаблон/);

split;


Разделяет строку, указанную выражением, на массив элементов и возвращает его. В скалярном контексте возвращает количество полученных элементов массива, а сам массив помещает в @_ (в списковом контексте поместить результат в @_ можно если применить ?шаблон?) Если выражение отсутствует, то обрабатывается содержимое переменной $_. Если шаблон отсутствует, то разделителем является пробел. Все, что подходит по шаблону, считается разделителем. Если указан предел, то это максимальное число разделений. Отрицательное значение предела воспринимается как неограниченно большой предел. Если пустая строка походит под шаблон разделителя, то исходное значение разделяется посимвольно. Предел удобно использовать для частичного разделения строки.

($a, $b, $остаток) = split(/ /, "Один Два Три Четыре",3);

# $a = 'Один', $b = 'Два' и $остаток = 'Три Четыре'

Если шаблон содержит круглые скобки, то символы-разделители, указанные в них, вставляются в результирующий список как обычные элементы, причем вставляется символ, который совпал с разделителем

@a = split(/([,.])/, "Один,Два.Три");

# @a = ("Один", "," ,"Два", ".", "Три")

И еще один примерчик:

@a = split(//,"червь");

# @a = ('ч','е','р','в','ь')

* * * *

Попробуйте создать так называемую "плоскую базу": напишите скрипт, который записывает в файл строчки такого вида: "переданная_строка1 & переданная_строка2 & переданная_строка3", при каждом обращении к скрипту. И выводящий на экран самую длинную строку из первых значений и саму короткую из вторых. Эти строки должны сопровождаться значениями из 3-их строк.

[Содержание]  [Вступление]  [необходимое для начала изучения]  [урок 1]  [урок 2]  [урок 3]  [урок 4]  [урок 5]  [урок 6]  [урок 7]  [урок 8]  [урок 9]  [урок 10]  [урок 11]  [урок 12]  [урок 13]  [урок 14]  [урок 15]  [урок 16]  [урок 17]  [урок 18]  [урок 19]  [урок 20]  [урок 21]  [урок 22]  [урок 23]  [урок 24]  [урок 25]  [урок 26]  [урок 27]  [урок 28]  [правила хорошего тона]  [приложение A]  [приложение Б]  [приложение В]  [заключение]  [благодарности] 

Copyright (c) ClericICN, 2002


Содержание раздела