![]() |
Модераторы: ginnie, korob2001 |
![]() ![]() ![]() |
|
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Добрый день.
подскажите пожалуйста возможно ли на перл реализовать следующее: 1. есть модуль который читает текстовый файл (в котором прописаны абсолютные пути файлам на диске). 2. а есть модуль который может заархивировать файл (ну например при помощи zip.exe) в модуль подставляется имя файла, который нужно заархивировать. Вопрос: как передать в программу (объединяющую эти два модуля) из 1 го модуля текущую читаемую строку? с тем чтобы подставить эту строку во второй модуль для архивирования файла. Дополнительное пояснение: Я не написал что я возвращаю из 1 го модуля, поскольку можно из него вернуть массив, содержащий строки (имена файлов), и тогда понятно как перебирая массив подставить его элементы во второй модуль. Но на этот путь становиться не хочется, потому как текстовый файл, который содержит в себе строки с именами файлов, получается после сканирования HDD и может быть очень большим, поэтому помещение его в массив скажется на производительности. Из 1го модуля необходимо добыть конкретную читаемую в данный момент времени строку... при этом такую вот придуманную модульность "рушить" не хочется... поскольку понятно, что задача "заархивировать файлы в каталоге" проста. Суть именно в том как в данном случае сделать это через вот такие вот модули. Спасибо. |
|||
|
||||
ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый burakov, если использовать ООП, то
Классы Reader::TextFile и Packer::Zip - это Ваши классы, которые читают и упаковывают. Это сообщение отредактировал(а) ginnie - 13.8.2008, 16:12 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Да, красиво получилось.
Еще бы коды этих классов в студию, вообще бы все мои вопросы бы разрешились. может у Вас какой примерчик готовый есть? ибо я понял теперь что перл при помощи ООП может реализовать то, что я хочу, но как реально необходимые классы написать я не знаю. собственно вопрос теперь в том каким образом сработает функция get_filename(). вообщем нужен живой пример классов. спасибо. p.s. все таки есть смутное сомнение ![]() Reader::TextFile читает файл в массив, а потом $reader->get_filename() получает через shift имя файла из массива и все красиво работает. ну как я уже писал выше на собственном опыте убедился (да и товарищи на этом форуме подсказывают тоже самое), что работать через массив можно и нужно, если количество количество строк положенных в массив НЕВЕЛИКО. в моем же случае количество строк прочитанных my $reader = Reader::TextFile->new(filename => 'file.txt') может быть большим порядка 5000 и более строк. поэтому хотелось бы не пихать эти строки в массив, а как то вот по другому... и при этом вот соблюсти ООП, потому как я привел фрагмент проекта, а так программка уже на 2000 строк (может конечно для кого то это и не много), но я уже начинаю путаться где у нее начало, а где конец и че мне от нее надо... ![]() Извиняюсь, если я чего не понял... вообщем на то и форум. очень нужны коды классов... Спасибо. |
|||
|
||||
ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Уважаемый burakov, вот Вам пример
Объект класса Reader::TextFile строится на основе файлового дескриптора. Это сообщение отредактировал(а) ginnie - 14.8.2008, 11:41 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Огромное спасибо.
Все понял. Это действительно то, о чем я спрашивал ![]() И работает так, как мне надо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: Системное программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |