Korrigan: Pfad zu meinem Perl-Script

Hallo ihr lieben,

wollte mal fragen ob einer von euch eine Idee hat, wie ich an den Pfad komme in dem mein Script abgelegt ist!
Brauche nicht den Pfad wo der Interpreter liegt sondern von meinem, von mir erstellten Script!!

Das Script soll auf verschiedenen Servern laufen und ich muss mich leider auf den Pfad beziehen der nicht auf jedem Server identisch ist!

Danke schon mal
LG
Korrigan

  1. Brauche nicht den Pfad wo der Interpreter liegt sondern von meinem, von mir erstellten Script!!

    Ich benutze dazu das Modul Cwd.

    Gruss,
    Michi

    1. » Brauche nicht den Pfad wo der Interpreter liegt sondern von meinem, von mir erstellten Script!!

      Ich benutze dazu das Modul Cwd.

      Da muss man ein bisschen aufpassen, da z.b. bei einem CGI Skript das Arbeitsverzeichnis nicht unbedingt das Verzeichnis, in dem das Skript ist, sein muss.

      Struppi.

      1. hi,

        »» Ich benutze dazu das Modul Cwd.

        Da muss man ein bisschen aufpassen, da z.b. bei einem CGI Skript das Arbeitsverzeichnis nicht unbedingt das Verzeichnis, in dem das Skript ist, sein muss.

        Genau! $0 ist trügerisch, vor allem dann, wenn ein Perl-Script nicht in dem Verzeichnis aufgerufen wird, in dem es sich befindet. Außerdem ist das was $0 als Pfadangabe liefert OS-abhängig (z.B. gibt XP hier nur den relativen Pfad an).

        Soll jedoch ein Perl-Script als CGI Verwendung finden, empfehle ich die in %ENV definierten Variablen

        SCRIPT_NAME
        SCRIPT_FILENAME

        je nach gewünschtem Kontext.

        Hotte

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
        1. Außerdem ist das was $0 als Pfadangabe liefert OS-abhängig (z.B. gibt XP hier nur den relativen Pfad an).

          Hast du ein anderes XP als ich?

          mfg Beat

          --
          ><o(((°>           ><o(((°>
             <°)))o><                     ><o(((°>o
          Der Valigator leibt diese Fische
          1. »» Außerdem ist das was $0 als Pfadangabe liefert OS-abhängig (z.B. gibt XP hier nur den relativen Pfad an).

            Hast du ein anderes XP als ich?

            G:\home\ich\html\cgi-bin>perl grep.pl
            grep.pl

            G:\home\ich\html\cgi-bin>cd ..

            G:\home\ich\html>perl cgi-bin/grep.pl
            cgi-bin/grep.pl

            (grep.pl: print "$0\n";)

            Hotti

            --
            Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
            1. 你好 hotti,

              G:\home\ich\html\cgi-bin>perl grep.pl
              grep.pl

              G:\home\ich\html\cgi-bin>cd ..

              G:\home\ich\html>perl cgi-bin/grep.pl
              cgi-bin/grep.pl

              (grep.pl: print "$0\n";)

              Bekannt, aber nicht wirklich ein Problem. Nachweis:

              #!/usr/bin/perl -w  
                
              use strict;  
              use File::Basename;  
              use Cwd qw/abs_path/;  
                
              my $dir = dirname(abs_path($0));  
                
              print "\$0: $0\ndir: $dir\n";
              

              Testcase:

              ckruse@Titania ~ $ perl test.pl  
              $0: test.pl  
              dir: /Users/ckruse  
              ckruse@Titania ~ $ cd ..  
              ckruse@Titania /Users $ perl ckruse/test.pl  
              $0: ckruse/test.pl  
              dir: /Users/ckruse  
              ckruse@Titania /Users $
              

              再见,
               克里斯蒂安

              1. hi,

                #!/usr/bin/perl -w

                use strict;
                use File::Basename;
                use Cwd qw/abs_path/;

                my $dir = dirname(abs_path($0));

                print "$0: $0\ndir: $dir\n";

                
                >   
                > Testcase:  
                >   
                > [code]  
                  
                Cannot chdir to G:\home\ich\html\cgi-bin\grep.pl:No such file or directory at G:\home\ich\html\cgi-bin\grep.pl line 7  
                  
                kommt da bei mir.  
                Hotto
                
                -- 
                Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
                
  2. 你好 Korrigan,

    wollte mal fragen ob einer von euch eine Idee hat, wie ich an den Pfad komme in dem mein Script abgelegt ist!

    Das kannst du mit Cwd und File::Basename machen:

    #!/usr/bin/perl -w  
      
    use strict;  
    use File::Basename;  
    use Cwd qw/abs_path/;  
      
    my $dir = dirname(abs_path($0));  
      
    print "dir: $dir\n";
    

    再见,
     克里斯蒂安

    --
    http://wwwtech.de/
    Die Stärke des Geistes ist unendlich, die Muskelkraft dagegen ist begrenzt.
    CFPropertyList: PHP-Klassen zur Manipulation von Apples property listsAdHoc-Distribution via IPA-Format
    1. Hey super... das ging ja richtig schnell und funktioniert auch noch super, vielen vielen Dank euch beiden!
      Wenn man mal vorher wüsste das es so einfach ist.... ;)

      Liebe Grüße

  3. Moin Moin!

    FindBin ist für EXAKT diesen Zweck geschrieben worde.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Moin;

      FindBin ist für EXAKT diesen Zweck geschrieben worde.

      Sehr gut, danke Alexander!

      Obwohl, ich selbst habe den Pfad zum Script innerhalb von einem solchen noch nie gebraucht. Für komplexere Anwendungen mit mehreren Scripts bevorzuge ich eine zentrale Konfigurationsdatei in der u.a. die Pfade festgeschrieben sind und binde die Konfigurationsdatei über ein zentrales Modul ein.

      One Ring to rule them all.

      Viele Grüße,
      Hotte

      --
      # die;