Иллюстрированный самоучитель по Perl
Глава 1
Вопросы и Упражнения
Вопросы
для самоконтроля
1. Что такое регулярное выражение?
2. Какие символы имеют в регулярном
выражении Perl специальное значение?
3. Что такое метапоследовательность,
как она образуется?
4. Что такое обратная ссылка?
5. Какая переменная используется
в операции подстановки по умолчанию?
6. Какой смысл имеет символ "$"
в следующих регулярных выражениях:
/abc*$/
/[аbс*$]/
/$abc/
7. Какой смысл имеет символ "
^ " в следующих регулярных выражениях:
/ ^ аbс/
/[аbс]/
/аbс ^ /
8. Объясните, какие множества
строк соответствуют следующим образцам. Приведите пример.
/a.out/
/a\.out/
/\d{2,3}-\d{2}-\d{2}/
/(.)(.).\2\1/ /(.) (.).\02\01/
9. Напишите образец, задающий
палиндром из шести букв.
10. Напишите команду замены, которая:
- заменяет все символы новой строки
пробелами;
- выделяет из полного маршрутного
имени файла имя файла;
- выделяет из полного маршрутного
имени файла имя каталога.
11. Каково значение следующих
выражений, если значение переменной
$var равно "123qwerty"?
$var =~ /./ $var =- /[A-Z]*/ $var =~ /\w{4-9}/ $var =~ /(\d)2(\D/ $var =~ /qwerty$/
$var =~ /123?/
11. Какое значение будет иметь
переменная $var после следующих операций подстановки, если ее начальное значение
равно "qwertyi23qwerty"?
$var =~ s/qwerty/XYZ/; $var =~
s/[a-zJ+/X/g; $var =~ s/B/W/i; $var =~ s/(.)\d.*\l/d/; $var =~ s/(\d+)/$l*2/e;
12. Начальное значение переменной
$var равно "qwertyi23qwerty". Каким оно будет после выполнения операций
транслитерации?
$var =~ tr/a-z/A-Z/; $var =~ tr/a-z/0-9/;
$var =~ tr/a-z/O-9/d; $var =~ tr/231/564/; $var =~ tr/123/ /s; . $var =~ tr/123//cd;
13. Переменная $var имеет значение
"qwertyqwerty". Каково значение, возвращаемое функцией?
substr ($var, 0, 3);
substr ($var, 4);
substr ($var, -2, 2);
substr ($var, 2, 0) ;
index ($var, "rt"); index
($var, "rtyu"); index ($var, "er", 1); index ($var, "er",
7); rindex ($var, "er");
Упражнения
1. Напишите программу, которая
читает стандартный ввод, умножает каждое встретившееся число на 2 и выводит
результирующую строку.
2. Напишите программу, которая
читает стандартный ввод, удваивает каждую букву и выводит результирующую строку.
3. Напишите программу, подсчитывающую,
сколько раз каждый алфавитно-цифровой символ встретился во вхбдном файле.
4. Напишите программу, которая
считывает строку из стандартного файла ввода, меняет в ней порядок следования
символов на обратный и выводит результат.
5. Напишите программу, которая
выполняет преобразование русского текста из одной системы кодировки в другую:
(Dos 866, Windows 1251, UNIX KOI8}
<=> (Dos 866, Windows 1251, UNIX, KOI8}
Для выполнения задания можно воспользоваться
табл. 10.3, содержащей шестнадцатеричные коды символов русского алфавита.
Таблица 10.3.
Таблицы кодов русского
алфавита