Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
perl.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
388.1 Кб
Скачать

Строковые операторы

Поскольку Perl представляет собой язык для обработки текста,неудивительно, что в него включены дополнительные операторы дляработы со строками. Ниже перечисляются операторы обработки строк:?. конкатенация строк ? х репликация ? =~ сопоставление переменной с образцом ? !~ то же, что и предыдущее, но с дополненным отрицанием результата

Первые два оператора легко иллюстрируются примером:

print 'b' . 'an' x 2 . 'a'; # выведет 'banana'

Как показано, это выражение использует конкатенацию строк иоператор репли-кации для того, чтобы напечатать строку <banana>.Два последних оператора используются для проверки того, включаетли строковый операнд заданный образец. Этот вопрос детально обсуждается в разделе <Регулярные выражения>. Следующий пример иллюстрирует их использование:

$var = 'banana';

print ($var =~ /ana/) ? TRUE : FALSE;

В этом случае оператор проверки вхождения в строку образца(=~) использовался для проверки того, входит ли образец ana в переменную $var. В данном случае выражение принимает значение <истинно>.

Операторы присваивания

Если вы знакомы с языком программирования С, то формы операторов присваивания языка Perl должны быть для вас совершенно знакомыми. Так же как и в С, эти операторы заставляют Perl выполнить специальные операции со значениями, которые появились с правой стороны оператора, и затем выполнить присваивание:

= += -= *= /= %= |= &=

^= ~= <<= >>= **= .= x=

LVALUES В языке Perl, так же как и в С, lvalue представляет собойимя того, что стоит с левой стороны оператора присваивания. Таким образом, lvalue представляет собой целостность, которой может быть присвоено значение, например, lvalue может быть переменной. Например, скрипт Perl не может присвоить значение строкесимволов, наподобие выражения <Bob> = 32, поскольку <Bob> не является lvalue. Тем не менее, скрипт может присвоить значение переменной $Bob, например, следующим образом $Bob = 32, посколькупеременная $Bob является lvalue. В языке Perl любая целостность,которая может использоваться как lvalue, обычно таковой и является. Например, следующее выражение упаковывает (pack) и распаковывает (unpack) список значений, причем список переменных в первомслучае и три скалярных во втором являются lvalues:

@color = ($r, $g, $b); # пакет цветов

($r, $g, $b) = @color; # распаковка цвета

Когда вы работаете со списками в языке Perl, оператор присваивания не обяза тельно относится ко всему списку. Скрипт можетприсваивать значения отдельным элементам списка, как показано ниже:

@items[2,4,7] = (100,200,300);

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

($arg1,$arg2,@rest) = @ARGV; # можно смешать скаляры и массивы

Операции для работы со списками

В состав операций для работы со списками входят следующие:

- , конструктор списков

- .. оператор области

- х оператор репликации

Вы уже использовали конструктор списков для инициализациимассивов и создания списка переменных, использованных какlvalues. Оператор области возвращает в качестве значения последовательность целых чисел, которая начинается от левого операнда ипродолжается до правого операнда включительно. Скрипты часто используют оператор области совместно с конструктором списков длясоздания списков. Например, следующее выражение использует оператор области для того, чтобы создать список под именем @digits,который содержит числа от нуля до девяти:

@digits = 0..9; # список (1,2,3,4,5,6,7,8,9)

Аналогичным образом, это выражение может использовать оператор области для создания области изменений индексов массива.Предположим, что список @days содержит дни недели (начиная с воскресенья). В следующем выражении списку @weekdays присваиваютсязначения, начиная от понедельника до пятницы:

@weekend = @days[1..5];

Наконец, следующее выражение использует два оператора области для создания списка шестнадцатиричных цифр:

@hex_digits = (0..9,a..f);

Оператор репликации просто создает копии данного операндауказанное число раз. Например, в следующем выражении список значений 1, 2, 3 повторяется три раза:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]