Forum Webscript.Ru

Программирование => Perl => Тема начата: metton от 14 Августа 2003, 00:26:43

Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: metton от 14 Августа 2003, 00:26:43
Доброго времени суток.
Возникла такая необходимость разбираться с чужими perl-исходниками. А так как с perl-ом я пока знаком очень мало, по ходу дела возникают вопросы.
Получилась своеобразная FAQ-а.
(Возможно, многое есть на форуме - буду искать, но пока скинул сюда все накопившиеся вопросы).

1) Например, обнаружил в конце одного из файлов такую строчку:

1;
Что это?

2) Чем отличается fetchrow от fetchrow_array?
Смотрел в спецификации (где-то скачал в pdf) вообще ни слова о fetchrow.
В руководстве упоминается fetchrow, но как-то странно: под заголовком fetchrow_array в тексте упоминается о DBI::fetchrow. Пробовал - различий в работе не нашёл.

3) Чем отличаются local() и my(). В документации почти ничего не нашёл по этому поводу. Написано только что лучше использовать my(), и что "local isn\'t what most people think of as \'local\'" и никаких пояснений...

4) Должен ли работать такой код:
# $query_res - хэндлер выполненного запроса
$query_res->insertid;
?
Потому что в одном месте я так и писал - всё работало. В другом работает только
$query_res->{insertid};

5) Есть ли различие в скорости обработки строк в одинарных и двойных кавычках. Точнее - сильно ли замедляет работу использование двойных кавычек (которые, насколько я знаю, парсятся)?

6) Отличаются чем-нибудь файлы .pl и .cgi?

7) Есть ли минусы у многоступенчатого (скажем, ступеней 4-5) включения файлов? Т.е., например, index.html содержит два включения файла, которые, в свою очередь, также содержат включения. Некотрые из включений могут быть exec-ами. Сильно ли это тормозит выдачу документа пользователю?

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

9) Что это за конструкция:

return <$title
END_OF_TEXT

и вот эта:
print qq{
some text
}

10) Немного оффтоп: как убить процесс Perl.exe когда он после неудачного тестирования скрипта нехило начинает грузить машину (это вроде распространённая проблема).

11) Как в Perl с сессиями?

12) Где можно найти инфу по технологии шаблонного генерирования страниц в Perl?
Очевидно не учитывая каких-то тонкостей по незнанию думал о таком варианте. (Прошу прокомментировать о его эффективности(скорость и др.)!)
Основной шаблон (весь дизайн страницы без каких-либо данных: контента, пунктов меню и т.д.) читается из хтмл-файла и все особые метки заменяются в нём регулярными выражениями на соответствующие шаблоны. эти шаблоны - небольшие файлы с блоками хтмл-я также с метками. Метки в главном могут заменяться на один шаблон, а могут на много: например метка контента заменяется на сгенерённый хтмл с результатом обращения к БД, а метка меню - на много однотипных шаблонов пунктов меню, в которых только заменяются метки названия пункта и ссылки.


Заранее спасибо.
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Макс от 14 Августа 2003, 01:50:34
2.   fetch alias for fetchrow_arrayref
3.
sub do_something {
   print "sub=".$c."\\n";
}
if (10 > 5) {
  my $c = 10;
  print "if=".$c."\\n";
  do_something($a);
}
print "simple=".$c;

Поэкспериментируй, замени my на local

6. зависит от настроек сервера
8. есть еще модуль для работы с gettext
11. ppm search session
насколько я знаю, Apache::Session - наиболее работоспособный модуль.
12. на этом сайте есть как минимум 2 статьи про шаблоны в перл.
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: metton от 14 Августа 2003, 02:25:17
1. вопрос закрыт
2. закрыт
3. эксперементирую
4. закрыт
5. всё ещё открыт
6. закрыт
7. открыт
8. открыт
9. открыт
10. открыт
11. Читаю.
12. открыт


2Макс
Спасибо за ответ!
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Wyclef от 14 Августа 2003, 08:14:15
5. Не заметил, никогда это не волновало...

7. Зависит от скорости работы, вызываемого exec-ом скрипта, а также от общего количества вложенных таблиц в HTML (IE например, пока не загрузит таблицу полностью - не покажет ее).

8. SSI, "переменная языка" в зависимости от рабочей директории (/rus/, /eng/), подгрузка соответсвующих файлов.

9. а) возвращает то что между <<"LABEL" и LABEL, вторая LABEL длжна стоять в отдельной строке.
b) тоже самое что и print "что-то и \\"в кавычках\\" например"; - удобнее написать print qq{что-то и "в кавычках" например};, можно и так qq~текст~;, qq!текст!; и т.д.
В обоих случаях в тексте можно использовать переменные.

10. Если скрипт запущен на локальном апаче, частенько помогает если убить апачь.
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Chs от 14 Августа 2003, 09:11:18
5. Есть.
perldoc Benchmark
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Phoinix от 14 Августа 2003, 12:22:02
metton Wyclef
10
Не совсем так... Apache как служба запускается от имени системы и даже администратор не в силах остановить дочерний процесс (если речь идет о Win2k или WinXP), Дабы не давть Apache такой уровень доступа можно запустить службу от другого пользователя системы, скажем от себя (Свойства службы -> Вход с ситему -> С учетной записью) если сервер локальный, или же от соответствующего пользователя с соответствующими правами доступа если сервер выходит в мир. После этого дочерние процессы убиваются без всяких трудностей... :)
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: metton от 14 Августа 2003, 19:41:36
2Wyclef
Спасибо :)
Тока вот если perl бить апачей, пёрла всё равно не убивается, однака...
Видимо, сработает метод Phoinix-а.

2Chs
Я, конечно, почитаю, но не уверен, что много пойму. Я ещё слишком мало знаю.
Хотелось бы поконкретней...

2Phoinix
Спасибо. Попробую.
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Wyclef от 14 Августа 2003, 21:53:48
Phoinix
Так уж категорично?.. Сам недавно так делал.
Правда скрипт считывал что-то с виртуального хоста или из его папки, не помню. Зависший процесс perl.exe начал кушать память неимоверно, перегружаться было лень, завершил работу Апача - висяк пикнул бипером и помер. :)
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Phoinix от 15 Августа 2003, 10:27:35
Wyclef
А зачем завершать работу Apache, потом заново запускать, если есть возможность просто убить процесс... Тем более изменение настройки службы занимает несколько секунд...
Название: Почти личное FAQ в связи с необходимостью разбираться с чужими исходниками
Отправлено: Wyclef от 15 Августа 2003, 16:55:17
[OFF]Phoinix
Процесс не убивался.[/OFF]