Giter Site home page Giter Site logo

test-task-for-vms-perl-'s Introduction

test_vms

Несколько десятков отправителей пишут письма в компанию. Их письма попадают в файл. Это обычный текстовый файл, длина строк в котором не превышает 1000 байт, а письма следуют одно за другим. Пример файла можно скачать по адресу http://italy-vms.ru/files/test/unix.mailbox.zip

Признак начала письма - строка, отвечающая следующим правилам: строка начинается словом From, сразу за которым следует один пробел, сразу за ним следует e-mail отправителя, за ним - пробел и какая-то дополнительная информация. Писем очень много, некоторые из них могут иметь большой объем (максимальный объем письма не ограничен). Объём входного файла может составлять много гигабайт. При этом количество разных отправителей не превышает 100. Напишите программу на Perl, которая преобразует этот файл во множество файлов по следующим правилам:

  • формат выходных файлов идентичен формату входного файла;

  • для каждого отправителя должна быть выделена своя директория. Имя не имеет значения. Все письма одного отправителя должны располагаться в файлах одной директории;

  • каждый из выходных файлов может содержать одно или несколько писем. Имена файлов не имеют значения. При этом не допускается разбивать одно письмо по нескольким файлам;

  • следует удерживать размер выходных файлов близким к некоему задаваемому заранее значению (параметром, в конфигурации или иным способом). Допускается следующий простой алгоритм ограничения размера: когда в процессе записи файл достигает указанного значения, текущее письмо дописывается в этот файл, а следующее письмо этого отправителя записывается уже в новый файл. Необязательно реализовывать именно этот алгоритм, но меры по ограничению размера отдельных файлов должны присутствовать.

При реализации учитывайте следующие ограничения:

  • как упоминалось выше, входной файл может быть очень большим, кроме того, считайте, что в будущем ваша программа может быть модифицирована на прием потоковых данных и беспрерывную работу. Поэтому организуйте работу таким образом, чтобы данные входного файла читались только один раз;

  • старайтесь не держать в памяти лишних данных, в частности, не забывайте, что объем одного письма не ограничен;

  • выходные файлы должны открываться и закрываться только один раз;

  • в программе не должны использоваться сторонние модули;

  • решение ожидается в виде одного относительно короткого файла, не нужно усложнять решение каким-то дополнительным функционалом, проверками данных и т.п.;

  • используйте, как минимум, strict;

Кроме того, обратите внимание, что пример файла не призван проверить все указанные правила работы с письмами.

test-task-for-vms-perl-'s People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.