/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Hvor skal filerne ligge?
Fra : Morten P


Dato : 19-12-09 01:20

Jeg har et program som kører som en dæmon der bliver startet fra init.d
(Det kan sende og modtage sms fra et modem)

Selve programmet ligger i /usr/sbin/gsm_server

For at programmet bliver overskueligt at vedligeholde har jeg splittet dele
af det op i under-moduler.

Men hvor skal disse placeres?

Jeg ser umiddelbart to muligheder:

1)
/usr/share/perl5/GSM/Server/Send_SMS.pm
/usr/share/perl5/GSM/Server/Receive_SMS.pm


2)
/usr/share/gsm_server/Send_SMS.pm
/usr/share/gsm_server/Receive_SMS.pm



Den første er ret lækker for /usr/share/perl5 er med i Perls søgesti og jeg
kan kalde modulerne med

my $send = new GSM::Server::Send_SMS;

mens den anden kræver lit 'use lib' sjov.


Omvendt er modulerne jo meget specifikke og kun anvendbare for programmet
'gsm_server' så måske det er helt galt at smide dem i '/usr/share/perl5'?



Hjælp, guide og best-practice ønskes





 
 
Flemming Frandsen (20-12-2009)
Kommentar
Fra : Flemming Frandsen


Dato : 20-12-09 10:23

Morten P wrote:
> mens den anden kræver lit 'use lib' sjov.

Jeg ville helt klart smide modulerne sammen med programmet, evt. i et pm
subdir, tricket med at finde modulerne ordnes så ved:

....
use FindBin qw($Bin);
use lib "$Bin/pm";
use LokaltHejs;

--
Flemming Frandsen - http://dren.dk - YAPH

Morten P (20-12-2009)
Kommentar
Fra : Morten P


Dato : 20-12-09 10:55


"Flemming Frandsen" <ff-news@nrvissing.net.invalid> wrote in message
news:4b2decfb$0$56787$edfadb0f@dtext02.news.tele.dk...
> Morten P wrote:
>> mens den anden kræver lit 'use lib' sjov.
>
> Jeg ville helt klart smide modulerne sammen med programmet, evt. i et pm
> subdir, tricket med at finde modulerne ordnes så ved:


Dvs ned i /usr/share/sbin/PM/*.pm ?

Det er vel også det "reneste" men troede ikke jeg "bare" kunne hælde
programspecifikke ting ned i sbin...



Peter Makholm (20-12-2009)
Kommentar
Fra : Peter Makholm


Dato : 20-12-09 11:35

"Morten P" <spam@spam.spam> writes:

> Jeg har et program som kører som en dæmon der bliver startet fra init.d
> (Det kan sende og modtage sms fra et modem)

Jeg ville absolut lave en CPAN-lignende pakke med dit program, enten
med Module::Build eller ExtUtils::MakeMaker. Så vil du få en Build.PL
eller Makefile.PL der gør det rigtige.


> Omvendt er modulerne jo meget specifikke og kun anvendbare for programmet
> 'gsm_server' så måske det er helt galt at smide dem i '/usr/share/perl5'?

Jeg ville lægge dine moduler ned under App::GSM_Server::*. Alt det
kode du ikke har tænkt dig at lægge i moduler ville jeg placerer i
App::GSM_Server, eventuelt i en run-funktion.

Selve "scriptet" vil så bare bestå af to linjer der siger:

use App::GSM_Server;
App::GSM_Server->run();

Lidt ala http://github.com/pmakholm/app-bulkmail-perl

//Makholm

Peter Makholm (20-12-2009)
Kommentar
Fra : Peter Makholm


Dato : 20-12-09 11:49

Peter Makholm <peter@makholm.net> writes:

> Selve "scriptet" vil så bare bestå af to linjer der siger:
>
> use App::GSM_Server;
> App::GSM_Server->run();
>
> Lidt ala http://github.com/pmakholm/app-bulkmail-perl

Ved nærmere eftertanke måske ikke et helt godt eksempel fordi jeg også
leger lidt rundt med Any::Moose. Men ideen er simpelt at have

package App::Bulkmail;

use Carp;

sub new {
my ($class, %args) = @_;

unless (keys %args) {
require Getopt::Long;
Getopt::Long::GetOptions( \%args,
"foo=s", "bar=i"
) or croak(...);
}

return bless \%args, $class;
}

sub run {
my $self = shift;

unless (blessed $self) {
$self = $self->new( @_ );
}

...
}

1;

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407827
Brugere : 218875

Månedens bedste
Årets bedste
Sidste års bedste