Назад
Парадигмы программирования
Практика
Список семестровых заданий («лабораторных работ») по Перлу
Практические задания по перлу подобраны с учетом опыта использования этого языка для выполнения
повседневных задач и призваны показать студентам его пользу в реальной жизни (ну если не всем студентам,
то хотя бы некоторым). К сожалению, используя в качестве операционной системы Windows, сложно оценить пользу
так называемых one-liners (скриптов на перле, состоящих из одной строки), поэтому эта тема в курсе практически
не представлена.
- Подсчет слов. На вход программе (в поток
STDIN
) подается список слов, одно слово в
строке. Подсчитать количество вхождений каждого слова и вывести слова без повторений с указанием количества
вхождений (в произвольном порядке) в виде tab separated строк (слово и количество разделять знаком табуляции).
Пример ввода | Пример вывода |
vasya petya kolya vasya petya vasya
|
vasya 3 kolya 1 petya 2
|
- Опять подсчет слов. На вход программе (в поток
STDIN
) подается текст,
состоящий из букв латинского алфавита, знаков препинания, пробелов и переводов строки.
Подсчитать количество вхождений каждого слова и вывести слова без повторений с указанием количества
вхождений (в произвольном порядке) в виде tab separated строк (слово и количество разделять знаком табуляции).
Слова, написанные в разном регистре, считать одинаковыми. Апостроф считается частью слова.
Пример ввода | Пример вывода |
Whether the weather be fine
Or whether the weather be not,
Whether the weather be cold
Or whether the weather be hot,
We'll weather the weather
Whatever the weather,
Whether we like it or not.
|
whatever 1
hot 1
we'll 1
we 1
not 2
fine 1
whether 5
or 3
the 6
weather 7
it 1
cold 1
be 4
like 1
|
- Сортировка tab-separated записей. На вход программе (в поток
STDIN
) подается набор
tab-separated строк: первым элементом является произвольная строка, вторым — число.
Вывести эти строки упорядоченными в порядке уменьшения второго элемента (это можно использовать, например,
для вывода слов из предыдущего задания в порядке уменьшения частоты встречаемости). Внутри группы
с одинаковым вторым элементом строки должны быть отсортированы по алфавиту.
Пример ввода | Пример вывода |
whatever 1
hot 1
we'll 1
we 1
not 2
fine 1
whether 5
or 3
the 6
weather 7
it 1
cold 1
be 4
like 1
|
weather 7
the 6
whether 5
be 4
or 3
not 2
cold 1
fine 1
hot 1
it 1
like 1
we 1
we'll 1
whatever 1
|
Примечание. Формат строк, названный в предыдущих заданиях tab-separated (строка, разделенная символами
табуляции \t
), является очень удобным форматом для хранения текстовых таблиц, т.к. текстовые данные редко содержат
знаки табуляции. Двумя другими популярными форматами является CSV (comma-separated values, значения, разделенные запятыми
— этот формат понимает Microsoft Excel) и colon-separated file (например, /etc/passwd
, поля в котором
разделены двоеточиями).
- Параметры CGI. На вход программе (в поток
STDIN
) подается строка в формате
x-www-urlencoded. Этот формат позволяет кодировать в строке пары «ключ — значение»,
используя только алфавитно-цифровые символы, а также символы +
и %
. Кодирование происходит следующим
образом: все пробелы в ключах и значениях заменяются на плюсы, а все символы, не являющиеся буквами либо
цифрами, на последовательность %XX
, где XX
— шестнадцатеричный ASCII-код
соответствующего символа (ровно два знака). Затем ключи и значения склеиваются символом =
,
а эти пары склеиваются символом &
. Необходимо построить хэш из пар «ключ — значение»
и вывести эти пары в STDOUT
в порядке возрастания ключей.
Пример ввода | Пример вывода |
a=b&vasya=1&%E2%E0%F1%FF=%EF%E5%F2%FF |
а b
vasya 1
вася петя
|
Примечание. В примере использована кодировка Windows-1251.
- Параметры CGI — обратное преобразование.
Дан хэш (пары «ключ — значение»). Выполнить преобразование этого хэша в строку в формате
x-www-urlencoded.
Пример ввода | Пример вывода |
а b
vasya 1
вася петя
|
a=b&vasya=1&%E2%E0%F1%FF=%EF%E5%F2%FF |
Примечание. В примере использована кодировка Windows-1251.
Примечание. Описанный в заданиях 4 и 5 формат (иногда называемый x-www-urlencoded) повсеместно используется
для передачи данных CGI-скриптам. Например, обратите внимание на содержимое адресной строки браузера,
когда вводите запрос в Google.