|
Тема
|
Perl pluggins
|
|
Автор | wtdv (Нерегистриран) |
Публикувано | 18.09.07 16:26 |
|
Здравейте, трябва ми някъде да прочета как се пишат пърл програми с възможност за добавяне на плъгини. Просто не ми е ясна цялата механика на това - как основата ползва плъгините след като когато е написана не е знаела какъв плъгин ще се напише за нея и обратното.
Примерно съм написал обикновена уеб страничка с бутончета и решавам да направя плъгин с който се добавя нов бутон до другите и съответно негова си функция. Та как ще се впише това ново бутонче в цялата картина и няма ли да пречи на другите.
Моля ако може да ми дадете линкове с материали и примери.
| |
Тема
|
Re: Perl pluggins
[re: wtdv]
|
|
Автор | novobranec (Нерегистриран) |
Публикувано | 18.09.07 19:26 |
|
Според мен питаш за различни неща...
Конкретизирай се малко. Какво общо има генерирането на динамични html страници с предефинирането на методи в perl?
| |
Тема
|
Re: Perl pluggins
[re: wtdv]
|
|
Автор |
smoke () |
Публикувано | 18.09.07 21:07 |
|
Няма понятие плъгин в Пърл.
Има модули (или по-точно класове, виж search.cpan.org).
Ако питаш за уеб-базирани решения, може би визираш темплейт системите или фреймуъркс като Каталист и Мейпол?
| |
Тема
|
Re: Perl pluggins
[re: smoke]
|
|
Автор | wtdv (Нерегистриран) |
Публикувано | 19.09.07 01:08 |
|
Явно не съм се изразил правилно. На пърл пиша отдавна. Не е въпроса за самите модули. Това със уеб-а беше лош пример. Искам да напиша една програма, но в последствие да добавям код като плъгини към нея. Искам да избегна фрейуоркс и тнт. Попаднах на Module::Pluggable и Class::Trigger, но не ми е ясна цялата механика на програма, която работи с допълнително добавени по-късно плъгини. Мерси все пак.
| |
Тема
|
Re: Perl pluggins
[re: wtdv]
|
|
Автор |
smoke () |
Публикувано | 19.09.07 12:54 |
|
Не знаех за Module::Pluggable, оказва се удобно решение.
Това е кратък пример, ако не съм обяснил добре, питай.
командите са в bold:
files in the testing dir `ls -R`
.:
MyParser MyParser.pm test.pl
./MyParser:
Plugin
./MyParser/Plugin:
A.pm B.pm
cat test.pl
#!/usr/bin/perl
use strict;
use warnings;
use MyParser;
my $obj = MyParser->new({});
### praktichnoto w plugin abstrakciqta:
$obj->parse("tovA e teST");
cat MyParser
package MyParser;
use Module::Pluggable require => 1;
sub new {
my $class = shift;
my $self = shift;
bless $self, $class
}
sub parse {
my $self = shift;
my $string = shift;
for my $plugin ($self->plugins) {
$plugin->parse($string);
}
}
1;
cat MyParser/Plugin/A.pm
package MyParser::Plugin::A;
sub new {
my $class = shift;
my $self = shift;
bless $self, $class
}
sub parse {
my $self = shift;
my $data = shift;
print "plyginyt '" . __PACKAGE__ . "' implementira lowercase: " . lc $data . "\n";
}
1;
cat MyParser/Plugin/B.pm
package MyParser::Plugin::B;
sub new {
my $class = shift;
my $self = shift;
bless $self, $class
}
sub parse {
my $self = shift;
my $data = shift;
print "plyginyt '" . __PACKAGE__ . "' implementira uppercase: " . uc $data . "\n";
}
1;
perl test.pl следва да изведе на STDOUT това:
plyginyt 'MyParser::Plugin::A' implementira lowercase: tova e test
plyginyt 'MyParser::Plugin::B' implementira uppercase: TOVA E TEST
| |
Тема
|
Re: Perl pluggins
[re: smoke]
|
|
Автор | wtdv (Нерегистриран) |
Публикувано | 19.09.07 13:25 |
|
Мерси smoke този пример мисля, че ми очертава картината :) останалото сам ще си го доразвия.
Успех
| |
|
|
|
|