Вопросы для самоконтроля
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. Таблицы кодов русского алфавита
Символ |
866 |
1251 |
KOI8 |
Символ |
866 |
1251 |
KOI8 |
А |
80 |
СО |
Е1 |
а |
АО |
ЕО |
С1 |
Б |
81 |
С1 |
Е2 |
б |
А1 |
Е1 |
С2 |
В |
82 |
С2 |
F7 |
в |
А2 |
Е2 |
D7 |
Г |
83 |
СЗ |
Е7 |
г |
A3 |
ЕЗ |
С7 |
Д |
84 |
С4 |
Е4 |
Д |
А4 |
Е4 |
С4 |
Е |
85 |
С5 |
Е5 |
е |
А5 |
Е5 |
С5 |
Ё |
FO |
А8 |
ВЗ |
е |
F1 |
В8 |
A3 |
Ж |
86 |
С6 |
F6 |
ж |
А6 |
Е6 |
D6 |
3 |
87 |
С7 |
FA |
3 |
А7 |
Е7 |
DA |
И |
88 |
С8 |
Е9 |
и |
А8 |
Е8 |
С9 |
И |
89 |
С9 |
EA |
Й |
А9 |
Е9 |
СА |
К |
8А |
СА |
EB |
к |
АА |
ЕА |
СВ |
Л |
8В |
СВ |
EC |
л |
АВ |
ЕВ |
СС |
М |
8С |
СС |
ED |
M |
АС |
ЕС |
CD |
Н |
8D |
CD |
ЕЕ |
Н |
AD |
ED |
СЕ |
О |
8Е |
СЕ |
EF |
0 |
АЕ |
ЕЕ |
CF |
П |
8F |
CF |
FO |
П |
AF |
EF |
DO |
Р |
90 |
DO |
F2 |
Р |
ЕО |
FO |
D2 |
С |
91 |
D1 |
F3 |
с |
Е1 |
F1 |
D3 |
Т |
92 |
D2 |
F4 |
т |
Е2 |
F2 |
D4 |
У |
93 |
D3 |
F5 |
У |
ЕЗ |
F3 |
D5 |
ф |
94 |
D4 |
E6 |
ф |
Е4 |
F4 |
С6 |
X |
95 |
D5 |
E8 |
X |
Е5 |
F5 |
С8 |
Ц |
96 |
D6 |
E3 |
ц |
Е6 |
F6 |
СЗ |
ч |
97 |
D7 |
FE |
Ц |
Е7 |
F7 |
DE |
ш |
98 |
D8 |
FB |
ш |
Е8 |
F8 |
DB |
Щ |
99 |
D9 |
FD |
Щ |
Е9 |
F9 |
DD |
ъ |
9А |
DA |
FF |
ъ |
ЕА |
FA |
DF |
ы |
9В |
DB |
F9 |
ы |
ЕВ |
FB |
D9 |
ь |
9С |
DC |
F8 |
ь |
ЕС |
FC |
D8 |
э |
9D |
DD |
FC |
э |
ED |
FD |
DC |
ю |
9Е |
DE |
EO |
ю |
ЕЕ |
FE |
СО |
я |
9F |
DF |
F1 |
я |
EF |
FF |
D1 |