Legolas: Modul installieren

HI zusammen.

Also ich hab bei meinem Webhoster freie CGI´s. Und da sind natütlich auch ein haufen Module installiert. Aber jetzt bräucht ich ein Module, dass da nicht installiert ist.
Infos:
Ich hab keine Zugriff auf das Verzeichniss wo die anderen Module installiert sind --> @INC ausgelesen.
Habe auch kein SSH/Telnet-Zugang.

Frage 1:
Kann ich mir dennoch ein Modul zum Bleistift von CPAN installieren ?

Frage 2:
Wenn ja, wie. Bitte Erklärung für Dummies :-)

Vielen Vielen Dank schon mal für eure Hilfe.

cu
Legolas

  1. Sup!

    Also ich denke so ohne SSH/Telnet wird das ein Problem.

    Aber ich war auch gestern in Herr der Ringe.
    Da waren in der Tat so Idioten, die wussten nicht, daß Herr der Ringe eine Trilogie ist, und haben sich aufgeregt, daß der Film in drei Teilen rauskommt. Ich hätte sie alle...

    Gruesse,

    Bio

  2. Hi,

    Ich hab keine Zugriff auf das Verzeichniss wo die anderen Module installiert sind --> @INC ausgelesen.

    Dir ist aber klar, daß Du natürlich @INC innerhalb Deiner Skripte sehr wohl ändern darfst?
    Es reicht also, wenn Du das Modul irgendwohin installierst und es dann explizit von dort her lädst.

    Kann ich mir dennoch ein Modul zum Bleistift von CPAN installieren ?

    Im Prinzip ja - das hängt davon ab, ob das Modul reiner Perl-Quelltext ist oder irgendwie auf der Ziel-Plattform übersetzt werden muß.
    Normale CPAN-Installationen machen ja im Wesentlichen "make; make test; make install;"; wenn Du das irgendwo anders auch machen (oder nachbilden) und das Ergebnis per FTP hochladen kannst, hast Du gewonnen.

    Wenn ja, wie. Bitte Erklärung für Dummies :-)

    Das ist leider nicht beliebig trivial.
    Im Wesentlichen müßtest Du versuchen, die im Modul enthaltene Datei Makefile.PL zu lesen und zu verstehen - das ist ein Perl-Skript, welches das später verwendete Makefile generieren soll.
    Wenn das irgendwas Plattformspezifisches tut bzw. braucht, dann brauchst Du einen Dialogzugang zu Deinem Server - welcher aber sehr wohl aus einem CGI-Skript als telnet-Emulation bestehen kann, wie ich gerade in zwei anderen Threads auch erwähnt habe.

    Viele Grüße
          Michael

    1. Dir ist aber klar, daß Du natürlich @INC innerhalb Deiner Skripte sehr wohl ändern darfst?
      Es reicht also, wenn Du das Modul irgendwohin installierst und es dann explizit von dort her lädst.

      Wie geht das ? Ich hab dass bis jetzt in keinem Tutorial gefunden ?!?

      Kann ich mir dennoch ein Modul zum Bleistift von CPAN installieren ?

      Im Prinzip ja - das hängt davon ab, ob das Modul reiner Perl-Quelltext ist oder irgendwie auf der Ziel-Plattform übersetzt werden muß.
      Normale CPAN-Installationen machen ja im Wesentlichen "make; make test; make install;"; wenn Du das irgendwo anders auch machen (oder nachbilden) und das Ergebnis per FTP hochladen kannst, hast Du gewonnen.

      Hmm. Also das erkennt man vorher nicht, ob man es bloß hochladen muss..
      Also wenn ich Z.B. ein eigenes Modul schreiben würde namens hugo.pm
      , wie müsste ich das jetzt machen, dass ich es benutzten kann (ich meine nicht das einbinden mit use oder require, sondern das das Script weiss wo es ist.)

      cu
      Legolas

      1. hi!

        Wie geht das ? Ich hab dass bis jetzt in keinem Tutorial gefunden
        ?!?

        Siehe perldoc -q lib bzw. perldoc perlfaq8: "How do I keep my own
        module/library directory?".

        === cut ===
            When you build modules, use the PREFIX option when generating
            Makefiles:

        perl Makefile.PL PREFIX=/u/mydir/perl

        then either set the PERL5LIB environment variable before you run
            scripts that use the modules/libraries (see the perlrun manpage)
            or say

        use lib '/u/mydir/perl';

        This is almost the same as

        BEGIN {
                    unshift(@INC, '/u/mydir/perl');
                }

        except that the lib module checks for machine-dependent
            subdirectories. See Perl's the lib manpage for more information.
        === cut ===

        bye, Frank!