данных сеть xml-файлы Специфические вычисления работа с большими числами работа датами и временем шифрование Высокий уровень функционал для регистрации и авторизации пользователей функционал для загрузки, отображения и обработки фото на сайте 4 / 104
require use Пространства имен и области видимости пакеты и таблицы символов области видимости фазы компиляции и выполнения Модули версионность pragma CPAN 5 / 104
снаружи имеет свою область видимости возвращает последнее вычисленное значение возвращает undef и устанавливает $! в случае ошибки открытия файла возвращает undef и устанавливает $@ в случае ошибки компиляции/ выполнения 8 / 104
выполнение в случае ошибки открытия файла, компиляции или выполнения не пытается загрузить и выполнить файл, если он уже был загружен ранее проверяет последнее вычисленное значение, останавливает выполнение, если оно ложно при первой загрузке файла возвращает последнее вычисленное значение, при последующих попытках его загрузить возвращает 1 13 / 104
simplified implementation sub my_require { my ($file) = @_; return 1 if $INC{$file}; my $filepath = find_in_inc($file) or die "Can't find $file in \@INC"; my $result = do $filepath or die "$file did not return true value"; die $@ if $@; $INC{$file} = $filepath; return $result; } 14 / 104
compile end Local::Phases UNITCHECK Local::Phases runtime main compile end main UNITCHECK Local::Phases CHECK main CHECK main INIT Local::Phases INIT main runtime 47 / 104
version! use 5.20; # Perl v5.200.0 required (did you mean v5.20.0?)-- # this is only v5.16.3, stopped use v5.20; # Perl v5.20.0 required--this # is only v5.16.3, stopped use 5.020_000; # Perl v5.20.0 required--this # is only v5.16.3, stopped 55 / 104
$var = "foo"; my $ref = "var"; { no strict 'refs'; print $$ref; # foo } print $$ref; # Can't use string ("var") as a SCALAR ref # while "strict refs" in use 65 / 104
Argument "a" isn't numeric in addition (+) # (W numeric) The indicated string was fed as # an argument to an operator that expected # a numeric value instead. If you're fortunate # the message will identify which operator was # so unfortunate. 67 / 104
email и паролю для аутентифицированных пользователей должно выводиться персонифицированное приветствие, код возврата скрипта - 0 в остальных случаях выдавать сообщение об ошибке, код возврата скрипта - любой, кроме 0 всю обработку, связанную с пользовательскими данными, выделить в отдельный модуль база данных пользователей должна храниться в том же модуле (мы еще не умеем ходить в настоящие базы данных) 78 / 104
my ($email, $passwd) = @ARGV; die "USAGE: $0 <email> <password>\n“ unless length $email && length $passwd; my $user = get_by_email($email); die "Пользователь с адресом '$email' не найден\n" unless $user; die "Введен неправильный пароль\n" unless $user->{passwd} eq $passwd; say welcome_string($user); say 'Добро пожаловать'; 79 / 104
дополнительный случайный ключ для усложнения подбора пароля по хешу предусмотреть возможное изменение механизма проверки пароля в будущем оставить обратную совместимость с форматом хранения паролей из версии 1.2 91 / 104
хеширования (SHA512, bcrypt, scrypt) переносим информацию о пользователях в базу данных или другое внешнее хранилище добавляем функционал для регистрации новых пользователей и изменения существующих данных интегрируем модуль в веб-приложение ... 95 / 104
список файлов музыкальной библиотеки, а на выходе рисует таблицу всех композиций согласно параметрам. Функционал должен быть разумно распределен по модулям, в самом скрипте должен остаться абслютно необходимый минимум. Дополнительно предлагается к получившимся модулям добавить автотесты. Это полностью опциональный пункт , на количество баллов его исполнение не повлияет . https://github.com/Nikolo/T echnosfera-perl/tree/master/homeworks/music_library 96 / 104
путей (с ведущими ./) всех файлов музыкальной библиотеки, начиная с ее корня. $ find -type f ./Dreams Of Sanity/1999 - Masquerade/The Phantom of the Opera.mp3 ./Dreams Of Sanity/1999 - Masquerade/Masquerade Act 1.mp3 ./Dreams Of Sanity/1999 - Masquerade/Opera.mp3 ./Dreams Of Sanity/1999 - Masquerade/Lost Paradise '99.mp3 ./Dreams Of Sanity/1999 - Masquerade/Masquerade - Interlude.mp3 ./Dreams Of Sanity/1999 - Masquerade/Within (The Dragon).mp3 ./Midas Fall/2015 - The Menagerie Inside/Push.ogg ./Midas Fall/2015 - The Menagerie Inside/Half a Mile Outside.ogg ./Midas Fall/2015 - The Menagerie Inside/Circus Performer.ogg Путь к каждому файлу стандартизирован: ./группа/год - альбом/ трек.формат 97 / 104
таблица. По умолчанию она содержит следующие колонки (слева-направо): группа, год, альбом, трек, формат . Вид таблицы строго определен: /------------------------------------------------------------------------------------\ | Midas Fall | 2015 | The Menagerie Inside | Low | ogg | |------------+------+----------------------+-----------------------------------+-----| | Midas Fall | 2015 | The Menagerie Inside | Push | ogg | |------------+------+----------------------+-----------------------------------+-----| | Midas Fall | 2015 | The Menagerie Inside | The Morning Asked and I Said 'No' | ogg | |------------+------+----------------------+-----------------------------------+-----| | Midas Fall | 2015 | The Menagerie Inside | Afterthought | ogg | |------------+------+----------------------+-----------------------------------+-----| | Midas Fall | 2015 | The Menagerie Inside | A Song Built From Scraps of Paper | ogg | |------------+------+----------------------+-----------------------------------+-----| | Midas Fall | 2015 | The Menagerie Inside | Counting Colours | ogg | \------------------------------------------------------------------------------------/ 98 / 104
Ширина колонки задается самым длинным значением, оно должно отступать от краев на один пробел (слева и справа). Остальные значения выравниваются по правому краю ячейки (отступая от него на один пробел). Для границ используются только символы /\-+|. В случае, если в таблице нет ни одной строки, ничего выводить не надо. 99 / 104
Параметр Смысл --band BAND Оставить только композиции группы BAND --year YEAR Оставить только композиции с альбомов года YEAR --album ALBUM Оставить только композиции с альбомов с именем ALBUM --track TRACK Оставить только композиции с именем TRACK --format FORMAT Оставить только композиции в формате FORMAT --sort FIELD Сортировать по возрастанию значения указанного параметра. FIELD может принимать значения band, year, album, track и format --columns COL_1,...,COL_N Список колонок через запятую, которые должны появиться в таблице (с учетом порядка). COL_I может принимать значения band, year, album, track и format. Дублирование допускается. Опциональный параметр, при отсутствии — использовать значение по умолчанию. 100 / 104
году должна выполняться с учетом того, что год — это целое число, а не строка. (Однако выводить год в таблице следует без изменений: так, как он указан в имени файла.) 101 / 104