[Perl]Module hilfreich?

Hier sehe ich desöfteren daß wenn jemand ein Problem hat er auf ein entsprechendes Modul verwiesen wird. Das mag ja ganz nützlich sein, doch was nützt es dem ‚Standart-User‘? Er kann sicher selten ein Modul installieren. Oder verstehe ich das falsch? Mir wären einfache Samples lieber als ein Link auf ein Model mit dem ich als User eh nicht viel anfangen kann.

mfg Slick

Hier sehe ich desöfteren daß wenn jemand ein Problem hat er
auf ein entsprechendes Modul verwiesen wird. Das mag ja ganz
nützlich sein, doch was nützt es dem ‚Standart-User‘? Er kann
sicher selten ein Modul installieren. Oder verstehe ich das
falsch? Mir wären einfache Samples lieber als ein Link auf ein
Model mit dem ich als User eh nicht viel anfangen kann.

  • Viele der erwähnten Module (wie z.B.: CGI.pm) bereits auf praktisch jedem Webserver installiert, da sie sozusagen zum Standardumfang jeder Perl Distribution gehören.
  • Viele Module lassen sich auch sehr einfach im lokalen Bereich des Webusers installieren (cgi-bin)
  • Warum ein fehlerhaftes oder unvollständiges Beispiel/Sample geben, wenn es perfekt getestete Module gibt, die die Aufgabe korrekt erledigen?
  • Die Module sind in der Regel gut dokumentiert (perldoc modulname) und enthalten i.d.R. auch Beispielcode für die Verwendung.
  • Wenn Du mit Modulen nichts anfangen kannst, dann solltest Du lieber nicht in Perl programmieren. Du schaffst nur Sicherheitslöcher und problembehafteten Code.

Meine 2 Cents.
Klaus

Hallo Slick,

die meisten und wichtigsten Module sind standardmäßig installiert. Schau doch mal selbst nach z.B. mit Perl Diver http://www.scriptsolutions.com/programs/free/perldiver/ , sogar bei Strato dürften da einige Module zusammen kommen :wink: .

MfG Jan

Wenn du keine Module lokal installieren kannst, kannst du sie aber (fast) immer privat installieren.

lege hierzu in deinem cgi-bin ein verzeichnis „mylib“ (name beliebig) an. In dieses Verzeichnis kopierst du die Module.

In den Skripten die die Module brauchen beginnst du dann so:

#!/usr/bin/perl
use lib qw(./mylib); #achtung! relativer Pfad
use AnderesModul; ....
....

und schon kannst du die Module nutzen.

holli

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

„lokal“ muß natürlich „global“ heißen.

Hi,

use lib qw(./mylib); #achtung! relativer Pfad

relativ zu was? Im CGI-Kontext ist der Begriff „aktuelles Verzeichnis“ komplett undefiniert - hiermit kannst Du sonstwo landen.

use lib ‚/absoluter/pfad/zu/mylib‘;

Übrigens haben Perl-Module in einem cgi-bin bzw. allgemein einem per HTTP zugänglichen Bereich nicht das geringste verloren.

Cheatah

Hi,

use lib qw(./mylib); #achtung! relativer Pfad

relativ zu was? Im CGI-Kontext ist der Begriff „aktuelles
Verzeichnis“ komplett undefiniert - hiermit kannst Du sonstwo
landen.

relativ zum Pfad des gestarteten scripts. bei apache und omniHttpd klappt das.

Übrigens haben Perl-Module in einem cgi-bin bzw. allgemein
einem per HTTP zugänglichen Bereich nicht das geringste
verloren.

Nun, manchmal gehts nicht anders. oder kennst du eine alternative?

Nun, manchmal gehts nicht anders. oder kennst du eine
alternative?

Wie wär’s mit:
use FindBin;
use lib $FindBin::Bin;

oder

use FindBin qw($Bin);
use lib „$Bin“;

alternativ kann man auch die Variable $0 auswerten. Sie enthält den kompletten Skriptnamen inklusive Pfad.

Klaus

Hi,

relativ zum Pfad des gestarteten scripts. bei apache und
omniHttpd klappt das.

in den von Dir getesteten Fällen vielleicht. Wichtig ist, daß man sich auf derartiges niemals verlassen sollte, weil es sonst irgendwann crasht - und man sucht ewig nach dem Fehler.

Falls man ihn überhaupt mitbekommt. Gerade bei CGI merken sowas meist die User, nicht man selbst.

Übrigens haben Perl-Module in einem cgi-bin bzw. allgemein
einem per HTTP zugänglichen Bereich nicht das geringste
verloren.

Nun, manchmal gehts nicht anders.

Selten. Ich kenne eigentlich kaum Accounts, bei denen man neben dem HTTP- nicht auch einen User-Bereich hätte.

Cheatah