PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eleganter Weg um Perl-Subroutinen in verschiedenen Skripten einzusetzen?



ThorstenHirsch
19-04-2005, 10:42
Servus.

Welche Möglichkeiten gibt es um seine Perl-Subroutinen an zentraler Stelle zu pflegen und in verschiedenen Skripten zu nutzen? require() kann ich leider nicht nutzen, die Subroutinen müssen fest in die Skripte reinkopiert werden, da die Skripte auf unterschiedlichen Hosts ausgeführt werden.

Ich dachte da an ein weiteres Perlskript, das mir alle Skripte durchgeht und wenn eine spezielle Zeichenfolge gefunden wird (z.B. MYSUB_<name>), wird die Datei subroutinen/MYSUB_<name> an das Skript angehängt und in das Verzeichnis fertige_Skripte kopiert. Aber vielleicht habt ihr ja bessere Vorschläge.

Gruß
Thorsten

ThorstenS
19-04-2005, 15:34
Wir haben für unsere Perlroutinen ein deb gebaut und packen es nach /usr/lib/perl5/NAME/datei.pm

Dann können wir damit arbeiten wie mit jedem anderen Modul, was über das CPAN hereinkommt.

michael.sprick
19-04-2005, 16:24
Ein Modul bringt ihm aber nix weil er den Code ja _in_ der Datei haben will.
Die Idee mit dem Parser, der bei Bedarf die Subs unten anhängt finde ich schon ganz gut. Ich glaube, dass ist auch so ziemlich die einzige Möglichkeit.

Kompliziert wird es nur dann, wenn Du auch Funktionen überladen willst oder globale Variablen benutzt werden.

baere
20-04-2005, 11:30
Ein Modul bringt was, auch wenn die Skripte auf unterschiedlichen Hosts ausgeführt werden:

Modul:
package MySubs;

use strict;

sub printMessage{
my ($msg) = @_;
print $msg,"\n";
}

1;

Skript:
#! /usr/bin/perl

use strict;
use warnings;
use FindBin ();
use lib ("$FindBin::Bin"); # wenn das Modul im gleichen Verzeichnis wie das Skript ist
use MySubs;

MySubs::printMessage("hallo");

ThorstenHirsch
22-04-2005, 11:10
Danke schonmal.

Ein Kollege hatte auch den Vorschlag mit dem Modul gemacht, aber dann müsste ich das Modul auf zu vielen Rechnern installieren und vor allem auch synchron halten, denn ich werde da auch noch so einiges rumprogrammieren müssen ...weshalb ich wohl eh für die codebasis subversion oder cvs nutzen wollte. Diese dann mit nem Skript zusammenbasteln und in einem anderen Verzeichnis ablegen, ich denke das wird klappen.