![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Посмотрите вложеные текстовые файлы. Есть некий файл со строками ($filename). Используя процедуры
упаковки в индекс-файл и определения по номеру индекса номера строки файла (build_index и line_with_index) находим нужную строку файла. Это все понятно. Далее предлагается использовать кэширование, чтобы индекс-файл не строился каждый раз снова, а, как я понимаю, находился в оперативной памяти и затребывался бы оттуда. И последнее. Чтобы два или более пользователя, обратясь одновременно к этой программе не вызвали бы конфликтной ситуации в ее работе предлагается установить блокировку двойного вызова процедуры создание индекс-файла. Индексирование у меня получается. Файл строится и нужная строка определяется. Вопрос: пожалуйста, объясните, КАК это работает. Не могу ничего понять с кэшированием и блокировкой. Пишу эту строку: @ARGV = = 2 or die "usage: print_line FILENAME LINE_NUMBER"; ($filename, $line_number) = @ARGV; и получаю всегда: "usage: print_line FILENAME LINE_NUMBER". Откуда в этих примерах берется число аргументов равное 2? Что это за переменные $orig, $idx Откуда они взялись, их нет в build_index и line_with_index! ![]() Вообщем, в этих примерах что-то такое обобщеное, условное. Как правильно сделать кэширование и блокирование? Добавлено через 1 минуту и 7 секунд Файлы вот Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
||||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
||||
|
||||
DurRandir |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 335 Регистрация: 27.9.2009 Репутация: 14 Всего: 17 |
Google it
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
что вы понимаете под "кешированием" и "блокированием"?
|
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
@ARGV обсуждался тут, при вызове программы дайте ей 2 аргумента. Вот только непонятно @ARGV = = 2. Тут что, между знаками равно пробел стоит? syntax error на это выскакивает. Это сообщение отредактировал(а) alezzz - 4.12.2010, 14:24 |
|||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
А что такое кэширование и блокирование на самом деле? Добавлено через 6 минут и 29 секунд А если я не работаю с командной строкой? Вариант первый: я вызываю программу в редакторе (использую Perl Express) нажатием кнопки Play. Как здесь дать ей 2 аргумента? Вариант второй: я вызываю программу браузером с апача. Как здесь задать два агрумента?
Думаю что это просто опечатка. Добавлено через 8 минут и 3 секунды неплохой совет. В результате я, кстати, нашел этот форум. Добавлено через 9 минут и 54 секунды Может кто-нибудь просто толково и доходчиво объяснить как работают эти примеры? |
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
на лекции надо было ходить регулярно.
|
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
C Perl Express не работал, под Windows у меня Absolute Perl. Там это делается так: ![]() В результате "test.txt" попадает в @ARGV. Что-то подобное должно быть и Perl Express. Про второй вариант shamber ответил. Любая документация по CGI должна помочь.
Они есть в основной программе, файл 8_12. Дескрипторы файла данных и файла индексов. В build_index и line_with_index приходят как параметры функции. Это сообщение отредактировал(а) alezzz - 5.12.2010, 16:22 |
|||
|
||||
Uran34 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
alezzz, спасибо. Кое-что проясняется.
Открыл один из присоединенных мною ранее файлов и увидел, что там комментарии искажены. Попробую по-другому их представить, может быть это более разъяснит суть моего вопроса. Пример 8.10
Пример 8.11
Пример 8.12
Добавлено через 10 минут и 45 секунд Вот что не могу понять. В какой части примера 8.12 находится конструкция кэширования, а в какой блокирования? Правильно ли понимаю: при зпауске программы происходит передача двух аргументов (дескриптор файла данных и дескриптор файла индекса). Если их количество превышает 2, из-за запуска программы более чем одним пользователем, выдается сообщение об ошибке. Но причем здесь кэширование? Это блокирование же! А кэширование в нижней части кода! Это сообщение отредактировал(а) Uran34 - 5.12.2010, 19:09 |
||||||
|
|||||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
нет не правильно понимаете, вот на счет блокировки правильно. Добавлено через 1 минуту и 45 секунд А кэширование в |
|||
|
||||
Uran34 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 9.11.2010 Репутация: нет Всего: нет |
Да, теперь понятно! Спасибо!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |