Я создаю программу для опроса сетевого устройства каждые 48 часов и записи выходных данных пользователя Perl и модуля Expect. На данный момент я сохраняю выходной текст в текстовый файл, а затем фильтрую текстовый файл, чтобы получить необходимую информацию. Первоначально это было нормально, так как эффективность не была такой уж большой проблемой при работе с файлом размером всего в сто КБ и сохранением большей части текста в любом случае, но я нашел новую команду, которую хочу выполнить удаленно на компьютере. сетевое устройство. Эта команда выполняется полтора часа, создает текстовый файл размером около 5 МБ, и я, вероятно, буду хранить только 10 КБ информации. Использование базового файлового ввода-вывода (чтение текстового файла, запись в текстовый файл) кажется плохой идеей, и я продолжаю думать, что должен быть лучший способ.
Что показало мое исследование на данный момент: мне, вероятно, следует использовать какую-то трубу. Что-то вроде:
open($filehandle, "myCommand");
Существуют и другие решения, но они, кажется, подразумевают, что я сохраняю ВЕСЬ файл в одну переменную, когда я хотел бы сохранить и изменить только его части перед записью в файл. TIEHANDLE хорошо работает для замены слова "печать", но я не думаю, что это необходимо или сработает здесь.
Что я пробовал до сих пор: перенаправление STDOUT с использованием канала. Результат: продолжал отправлять вывод в файл и не мог редактировать текст до того, как он был помещен в файл.
У меня закончились вещи для Google. Если полное решение слишком сложно для задачи, мы также будем очень признательны за подсказку о том, где могут быть следующие шаги.
Кроме того, если преимущества с точки зрения времени обработки на самом деле минимальны (мне неясно, сколько времени потребуется для обработки тестового файла размером 5 МБ, и я буду исследовать), пожалуйста, дайте мне знать.