Perl pluggins

5 отговора 0 прегледа
#1

Perl pluggins

Здравейте, трябва ми някъде да прочета как се пишат пърл програми с възможност за добавяне на плъгини. Просто не ми е ясна цялата механика на това - как основата ползва плъгините след като когато е написана не е знаела какъв плъгин ще се напише за нея и обратното.
Примерно съм написал обикновена уеб страничка с бутончета и решавам да направя плъгин с който се добавя нов бутон до другите и съответно негова си функция. Та как ще се впише това ново бутонче в цялата картина и няма ли да пречи на другите.
Моля ако може да ми дадете линкове с материали и примери.

Отговор
в отговор на wtdv #2

Re: Perl pluggins

Според мен питаш за различни неща...
Конкретизирай се малко. Какво общо има генерирането на динамични html страници с предефинирането на методи в perl?

Отговор
в отговор на wtdv #3

Re: Perl pluggins

Няма понятие плъгин в Пърл.
Има модули (или по-точно класове, виж search.cpan.org).
Ако питаш за уеб-базирани решения, може би визираш темплейт системите или фреймуъркс като Каталист и Мейпол?

Отговор
в отговор на smoke #4

Re: Perl pluggins

Явно не съм се изразил правилно. На пърл пиша отдавна. Не е въпроса за самите модули. Това със уеб-а беше лош пример. Искам да напиша една програма, но в последствие да добавям код като плъгини към нея. Искам да избегна фрейуоркс и тнт. Попаднах на Module::Pluggable и Class::Trigger, но не ми е ясна цялата механика на програма, която работи с допълнително добавени по-късно плъгини. Мерси все пак.

Отговор
в отговор на wtdv #5

Re: Perl pluggins

Не знаех за 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

Отговор
в отговор на smoke #6

Re: Perl pluggins

Мерси smoke този пример мисля, че ми очертава картината :) останалото сам ще си го доразвия.

Успех

Отговор