Host Europe und Perl

Meine eigene Domain und die Domains mehrerer Projekte, an denen ich mitarbeite, nutzen WebPacks bei Host Europe.

Die Firma ist freundlich, hilfsbereit und, meiner Meinung nach, der deutsche Anbieter mit dem besten Preis-/Leistungsverhältnis.

Die etwas obskur gemischte Ausstattung der Webpacks mit Perl Modulen ist der einzige Wermutstropfen.

Offensichtlich sieht man bei HE Perl als nicht so relevant an. Das erkennt man auch an der sehr mageren und teilweise etwas rückständigen Dokumentation für Perl Nutzer.

Beispiel: Die Verwendung eigener Perl Module

Wie bei vielen Shared Hosting Anbietern ist die Verwendung eigener Module zwar möglich, aber nicht unbedingt problemlos.

Laut Host Europe ist ein require die vorgeschlagene Methode. Die allerdings schlägt bei Modulen mit einer Verzeichnisstruktur fehl.

Wer z.B. das Angebot an XML Modulen durch einen bequemen "tree builder" wie XML::Twig erweitern will, fällt mit einem require "/absoluter/pfad/zu/Twig.pm"; voll auf die Nase.

Ich möchte deshalb hier kurz die portable, funktionierende Vorgehensweise erläutern.

Die "moderne" Perl Methode — der bessere Weg

Zuerst legt man unter cgi-bin ein Unterverzeichnis modules an. In diesem Verzeichnis legt man dann Unterverzeichnisse an, die nach dem ersten Teil des Namens des Moduls benannt sind. Für unser Beispiel XML::Twig eben XML.

Falls das Modul weitere eigene Unterverzeichnisse benötigt, legt man die innerhalb des ersten Verzeichnisses an. Für XML::Twig benötigt man z.B. ein Unterverzeichnis Twig in dem die XPath-Schnittstelle XPath.pm ihr Zuhause findet.

Für unser Beispiel XML::Twig sähe das dann so aus:

cgi-bin
|
modules
|
XML -> Twig.pm
|
Twig -> XPath.pm

Nachdem man sich aus dem Host Europe Kundeninformationssystem (KIS), oder alternativ durch ein Script, das %ENV ausliest, den absoluten Pfad zur Document Root der eigenen Domain beschafft hat, eröffnet man seine Scripte, die selbstinstallierte Module benötigen, ab dann mit dem Statement:

use lib "/absoluter/Pfad/zum/Verzeichnis/modules";

Danach kan man dann alle unter cgi-bin/modules abgelegten Module ganz bequem mit use einbinden.

Das Core Modul lib erweitert den Perl Suchpfad für Module um den Pfad zum Verzeichnis "modules" und damit kann Perl alle Dependancen auflösen, die ihr selbstinstalliertes Modul mitbringt. Im Beispiel XML::Twig ist das z.B. XML::Parser::Expat, der auf Host Europe standardmäßig installiert ist.

Diese Vorgehensweise ist seit Perl 5.0 möglich. Man fragt sich, warum die Host Europe Dokumentation dann immer noch die veraltete, dysfunktionale Methode empfiehlt.

Advertisements

About dozykraut

Proud member of Hillbilly's on Linux, promoting open source redneckism in remote parts of the Milky Way.
This entry was posted in Web and tagged , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s