Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl: Wie finde ich Verzeichnis des Scriptes raus?
Hiho,
wie kann ich mit meinem Perl-script herausfinden, in welchem Verzeichnis es sich befindet?
Thx...
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
hmmm... diesen Varriablen kann ich leider nicht viel mehr als den Dateinamen entlocken...
Uuuuuu, da habe ich was verdreht:
#!/usr/bin/perl
$0=~/^(.+)[^\/]+$/;
$path=$1;
print "$path \n";
hmm.... sorry, aber dem kann ich auch nur dem Dateinamen entnehmen... den ausgeführten, in dem Fall "./getpath"...
#!/usr/bin/perl
print "Diese Script liegt hier: $ENV{'SCRIPT_FILENAME'}\n";
T;o)Mes
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?
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
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
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...
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
@ghost
lolli hat wirklich recht. sein zweites script funktioniert bei mir vorzüglich, obwohls aussieht wie datenmüll... *lool*
greets
macolo
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.