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