Автоматический запуск сценария для чтения конкретной информации из файла .txt?(Perl Script, или предложить) - PullRequest
0 голосов
/ 31 марта 2011

Мой сценарий: Текстовые файлы будут входить в папку, например, мне нужно обнаружить новый текстовый файл и прочитать из него определенную информацию, скажем, в формате (word: info, ИЛИ слово и под ним столбец информации и т. Д.). И этот процесс должен продолжаться всегда.

Проблема: Как мне поступить, думаю, я использую Perl Scipt, но куда мне идти? здесь можно прояснить мои мысли.

Пожалуйста, помогите, пожалуйста, предложите путь для этого.

С уважением, Chirayu

Ответы [ 3 ]

1 голос
/ 31 марта 2011

Во-первых: вам нужен процесс-демон, поэтому вы можете захотеть взглянуть на Proc :: Daemon .

Во-вторых, вам нужно прочитать и проанализировать ваш файл.Синтаксический анализ зависит от его формата, и ваш вопрос не совсем ясен по этому поводу.

Наконец, вы можете рассмотреть вопрос о перемещении недавно обнаруженного файла (или переименовании) во время его обработки, затем завершите (возможно)удаляя его после обработки.Это зависит от требований, которые у вас есть.Кроме того, вы можете переместить недавно обнаруженный файл в каталог архива после его обработки.

0 голосов
/ 31 марта 2011

Какую операционную систему вы используете?

В Windows вы можете использовать Win32 :: ChangeNotify , а в Linux вы можете использовать Linux :: Inotify2 , чтобы получать уведомления об изменениях содержимого каталога.

Ваш сценарий может просто ждать уведомления и предпринимать действия при получении уведомления, а не опрашивать содержимое каталога, что приведет к потере ресурсов или, возможно, к пропущению некоторых изменений.

0 голосов
/ 31 марта 2011

Один из подходов может состоять в том, чтобы иметь процесс perl, который регулярно (скажем, каждые 5 секунд, каждые 5 минут или каждые 5 часов, ваш звонок действительно) сканирует указанную директорию и, как только появляется любой новый текстовый файл, порождает дочерний процесс, которыйобработайте его.

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

Что нужно искать, так это то, что делать с текстовыми файлами после их обработки.Они должны остаться?Затем вам нужно отследить, какие из них вы обработали, чтобы они не обрабатывались снова в случае, если ваш главный процесс (тот, который сканирует каталог и порождает дочерние Perl) должен быть перезапущен (из-за сбоя или преднамеренного перезапуска).

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

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

описание высокого уровня, но надеюсь, что оно поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...