Forum Webscript.Ru
Программирование => Perl => Тема начата: Timofey от 22 Апреля 2004, 10:09:43
-
подскажите как лучше и правильно релизовать следующее
есть целый набор подпрограмм,которые вызываются с разными параметрами, как мне вынести все эти подрограммы в отдельный файл и потом просто от туда их дергать?
-
в чем проблемма? запихиваешь их в отдельный файл... потом в скрипте его подключаешь:
-------------------
use lib \'.\';
use mydll.pl;
или
require "mydll.pl";
и пользуешся... :)
-
а в чем разница?
-
Timofey
а в чем разница?
лучше не задавай столь провакационные вопросы... :) Дискусии по этому вопросу на моей памяти доходити до 10 станиц... Народ с пеной у рта спорил по этому вопросу и все остались при своем мнении... :) просто юзай что больше нравиться...
-
perldoc perlmod
-
да и ещё когда будешь создавать файл с подпрограммами не забудь:
mydll.pl
-------------------
sub my_sub
{
print "GO+";
}
1; #вот ето.... Все файлы включения должны возращать значиние истены...
-------------------
-
т.е. есть у меня
main.pl
--------
#!/usr/bin/perl
# index
use DBI;
use CGI qw/:standard/;
use vars qw(%form);
require \'main_sub.pl\';
print "Content-Type: text/html\\n\\n";
pack1::convert_param();
pack1::date_format();
.....
и есть main_sub.pl
--------------
package pack1;
BEGIN {}
sub convert_param()
{
.............
}
sub date_format()
{
............
}
return 1;
END{}
запарно перед каждым вызовом подрограммы подставлять имя пакета pack1::convert_param(); и т.п. это можно обойти?
-
ну можешь без пакетов юзать... просто подпрограммы...
-
Timofey:
запарно перед каждым вызовом подрограммы подставлять имя пакета pack1::convert_param(); и т.п. это можно обойти?
можно.
perldoc perlmod
-
require \'templates/maintemp.pl\'; -работает
как в use указать путь к библиотеки
use \'templates/maintemp.pl\'; -не работает
-
Есть два варианта:
1. Я читаю тебе вслух и с выражением perldoc.
За это ты мне платиш 50$ в час.
2. Читать до того как сам не поймеш насколько неверен твой вопрос:
http://wdh.suncloud.ru/perl07.htm
-
NeoNox:
1. Я читаю тебе вслух и с выражением perldoc.
За это ты мне платиш 50$ в час.
С выездом к клиенту? :)
[OFF]В "цитаты..." отправил[/OFF]
-
3. Юзаешь require...
:)
-
Mog. этой шутке уже лет 10, если не больше.
В оригинале звучит как:
\'Чтение документации вслух с выражением - $50/час.\'
commander не нужно require.
Лучше неделю на ОО и пакеты убить, зато потом можно двойное жалование на работе просить.
-
NeoNox
:) "лучше пол дня потерять потом за час долететь..."
"Крылья, ноги.... Главное хвост!"
:)
-
Как писал в своё время Кевин Мельтцер:
------------------------------------------------------------
Многим людям не нравиться функция require(). Они предпочли бы, чтобы все файлы, загружались как модули функцией use(). Я же считаю что require() быстрее и проще, и, если Лари оставит эту функцию в языке, я буду её применять.
------------------------------------------------------------
Я придерживаюсь такого же мнения...
-
commander Фигню написал Кевин Мельтцер. Это не одно и тоже.
Ты действительно не понимаеш чем отличаются use и require и никогда не слышал о ОО программировании на perl?
-
NeoNox
Ваши сомнения мне совершенно не понятны...
Я имел в ввиду несколько другое... Если это простенькие подпрограммы, а судя по вопросу они врятли могут быть сложными... то намного быстрее и проще использовать require...
-
perldoc perlbot :)
-
commander:
Ваши сомнения мне совершенно не понятны...
Сомнения относительно чего?
perldoc perlmod:
require Cwd; # make Cwd:: accessible
$here = Cwd::getcwd();
use Cwd; # import names from Cwd::
$here = getcwd();
require Cwd; # make Cwd:: accessible
$here = getcwd(); # oops! no main::getcwd()
In general, "use Module ()" is recommended over "require
Module", because it determines module availability at comґ
pile time, not in the middle of your program\'s execution.
-
NeoNox
Вот примерно этого я и опасался...
лучше не задавай столь провакационные вопросы... Дискусии по этому вопросу на моей памяти доходити до 10 станиц... Народ с пеной у рта спорил по этому вопросу и все остались при своем мнении...
мы будем долго дискутировать и я почти не сомневаюсь каждый останиться при своём мнении...
-
commander пока что я привел тебе выдержку из perldoc а ты мне высказывание Кевина Мельтцера (которое я не могу найти в оригинале).
Кстати, я ничего не имею против require (хотя за последние два-три года его не использовал вообще ни разу) а о том, что не стоит программисту зашориваться. Есть такой инструмент и его нужно знать досконально.
-
Есть такой инструмент и его нужно знать досконально.
Подобное суждение должно иметь разумное ограничение... А то так можно умиреть серфя http://search.cpan.org/ в поисках новых инструментов... :) Ложка хороша к столу...
-
commander под инструментом я имел ввиду написание и использование модулей (пакетов). Называя CPAN, ты начинаеш рыть яму своей теории.
Я все еще не вижу доказательств почему я должен использовать require.
-
Ну давайте еще обсудим скрипты от Matt :)) там require очень показательно.:)
Приведу одно маленькое различие use и require - то, что написано с использованием модулей легко использовать повторно, а вот то, что вынесено в подпрограмму с использованием require - проблематично.:)
И, commander, не стоит спорить с двумя людьми имеющими большой опыт программирования не приводя аргументов.
-
Я вообще не собирался спорить... более того я в самом начале топика это заявил... И я не призываю везде и всюду использовать require, а только там где, это проще чем использования use...
Кстати вопрос:
Как известно, в случае использования команды require подключение идет в момент выполнения сценария, а в случае использования use на этапе компиляции... Вопрос: В чем принцепиальное отличие этих двух видов подключения?
-
commander ты же сам себе и ответил :)
Или ты хочеш узнать где практическое применение подключения на этапе комиляции или в какой последовательности и зачем вызываются (и вообще существуют) "BEGIN", "CHECK", "INIT", и "END"?
-
NeoNox
Вопрос звучал так:
В чем принцепиальное отличие этих двух видов подключения? Не больше не меньше... :)
-
perldoc perlmod до просветления...
-
commander
В чем принципиальное отличие этих двух видов подключения?
Если отсутствует подключаемый модуль, скрипт даже не запустится т.к. use не пройдет компиляцию. use выполняет неявное импортирование пакета включаемого модуля.