PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl: Wie finde ich Verzeichnis des Scriptes raus?



~Gh05t~
13-09-2002, 17:51
Hiho,
wie kann ich mit meinem Perl-script herausfinden, in welchem Verzeichnis es sich befindet?
Thx...

lolli
13-09-2002, 20:06
Versuchs mit der Variable $0
Diese enthält den kompletten Pfad und den dateinamen deines Skripts


#!/usr/bin/perl
$0=~/([^\/]+)$/;
$file=$1;
print "$file \n";


Oliver

~Gh05t~
13-09-2002, 20:21
hmmm... diesen Varriablen kann ich leider nicht viel mehr als den Dateinamen entlocken...

lolli
14-09-2002, 06:47
Uuuuuu, da habe ich was verdreht:

#!/usr/bin/perl
$0=~/^(.+)[^\/]+$/;
$path=$1;
print "$path \n";

~Gh05t~
15-09-2002, 15:53
hmm.... sorry, aber dem kann ich auch nur dem Dateinamen entnehmen... den ausgeführten, in dem Fall "./getpath"...

tomes
15-09-2002, 18:00
#!/usr/bin/perl

print "Diese Script liegt hier: $ENV{'SCRIPT_FILENAME'}\n";

T;o)Mes

~Gh05t~
15-09-2002, 18:09
hmmm... wisst ihr junx, ich finde es ja sehr schön, dass ihr mir helfen wollt, aber auch das hilft nicht... hier wird einfach gar nichts angezeigt...
Aber wenn das so schwer ist bin ich ja beruhigt... dann isses nit so schlimm, dass ich es selber nicht weis...
Aber ich würde mir auch selber helfen... dazu bräuchte ich nur mal eine Quelle, in der mal alle Umgebungsvarriablen aufgelistet sind... das wäre sowieso mal praktisch, bevor ich mir den Pfad mit "find / -name $0" suchen müsste... da finde ich vielleicht noch n paar andere nützliche sachen. Weis jemand wo ich sowas finde?

tomes
15-09-2002, 20:05
nur mit einem cgi Script und Ausgabe am Browser, da dann die Variablen vom Server auswertet werden.
Selber Schuld wenn man es nicht an der Konole ausprobiert. Ich dachte immer, was mit cgi klapt, geht auch in einem normalen Perl Script.
Tschuldigung.

Script fuer alle Umgebungvariablen:
#!/usr/bin/perl

#Liste mit den Environment-Variblen-Bezeichnungen erstellen
@envvars = keys(%ENV);

#Liste mit den Bezeichnungen und Inhalten ausdrucken
my $i = "1";
foreach $env (@envvars) {
print $i." -- ".$env." ---> ".$ENV{$env}."\n";
($i = $i+1);
}

T;o)Mes

lolli
16-09-2002, 07:03
Was willst du eigentlich????

> wie kann ich mit meinem Perl-script herausfinden, in welchem Verzeichnis es sich befindet?

Den Pfadnamen hat mein Skript doch ausgegeben. Wenn das nicht das ist, was du wolltest, war deine Beschreibung ziemlich mies :(

Oliver

~Gh05t~
16-09-2002, 16:21
Na endlich... ich glaube damit kann ich was anfangen, tomes...
Ich hatte gedacht es wäre leichter, da man das ja in shell einfach mit $(pwd) machen kann...

@lolli: Wenn dein Programm den Pfadnamen ausgegeben hätte, ok, aber ich bekam leider nur den Dateinamen...
Bsp: die datei liegt in /scripte/perl/getpath.pl . Bei deinem Script bekam ich ./getpath.pl, nicht /scripte/perl, was ich wollte.
Trotzdem thx@all...

tomes
17-09-2002, 07:22
kannst du ja auch unter Perl zugreifen --> $ENV{'pwd'}
Aber dies zeigt dir ja nur das aktuelle Verzeichniss an, also wo du dich gerade befindest.
In der Shell und unter Perl.
Rufst du dein Script von /scripte/perl/ auf --> Ausgabe von pwd == /scripte/perl/
Rufst du aber dein Script von / aus ( /scripte/perl/getpath.pl)auf --> ist pwd == /
Das ist auch bei $(pwd) so. Das geht nur zu umgehen, wenn du ein *prog* (z.B. Apache) zum Aufruf benutzt, oder dem Path eine Variable zuweist (z.B. $WegZumScript = "/scripte/perl/"; print $WegZumScript; ).

T;o)Mes

macolo
28-09-2002, 21:54
@ghost

lolli hat wirklich recht. sein zweites script funktioniert bei mir vorzüglich, obwohls aussieht wie datenmüll... *lool*

greets

macolo