Font
[thread]5675[/thread]

Absoluten Pfad des Skriptes rausbekommen?: Problemen beim Include...

Reader: 1


<< |< 1 2 >| >> 13 entries, 2 pages
macMeck
 2003-08-31 15:33
#82020 #82020
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Na super, jetzt hab ich mich wieder wo rein geritten. Ich beschreibe mal kurz den Tathergang:

1. Ich benutze das Modul Include um damit Konstanten einzubinden, weil ich die damit in einem Header-File im C-Style deklarieren kann.

2. Ich habe eine Klasse geschrieben (erste OO-Gehversuche), die auf diese Konstanten zugreifen muss.

Das Problem, das sich dabei ergibt ist, dass ich das Header-File im .pm-File nicht includen kann, da das Include-Modul immer im Pfad des Skriptes sucht, das die Instanz der Klasse erzeugt. Soweit mitgekommen?
Ich weiß, dass ich dem Include-Modul sagen kann, in welchem Pfad es suchen soll. Das passiert aber immer relativ zum aufrufenden Skript. Wenn ich also ein Skript habe, das in nem anderen Verzeichnis liegt, klappt's nicht mehr.

Deshalb die Frage: Kann ich in meiner Klasse irgendwo den absoluten Pfade in dem sich das .pm File der Klasse befindet herausbekommen?
Oder anders formuliert: Kann ich ich einem Skript den absoluten Pfad des Skriptes herausbekommen???

Bin irgendwie leicht am verzweifeln...

macMeck
It all works, as long as it's documented!
eisbeer
 2003-08-31 15:46
#82021 #82021
User since
2003-08-29
347 articles
BenutzerIn
[Homepage] [default_avatar]
use Cwd;
my $dir = getcwd;

use Cwd 'abs_path';
my $abs_path = abs_path($file);

vielleicht ?
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
[E|B]
 2003-08-31 15:52
#82022 #82022
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Hi!

Code: (dl )
1
2
$path = $ENV{'SCRIPT_FILENAME'};
$path =~ s/\/script\.cgi$//;
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
macMeck
 2003-08-31 16:07
#82023 #82023
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
[quote=eisbeer,31.08.2003, 13:46]use Cwd;
my $dir = getcwd;

use Cwd 'abs_path';
my $abs_path = abs_path($file);

vielleicht ?[/quote]
Das gibt immer nur das Verzeichnis zurück, von dem das Skript aufgerufen wurde...

macMeck
It all works, as long as it's documented!
macMeck
 2003-08-31 16:07
#82024 #82024
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
[E|B
,31.08.2003, 13:52]Hi!

Code: (dl )
1
2
$path = $ENV{'SCRIPT_FILENAME'};
$path =~ s/\/script\.cgi$//;

Und das funktioniert nur mit nem Apache, oder?\n\n

<!--EDIT|macMeck|1062331741-->
It all works, as long as it's documented!
pq
 2003-08-31 16:15
#82025 #82025
User since
2003-08-04
12201 articles
Admin1
[Homepage]
user image
den vollständigen pfad des skriptes willst du?
da gibt es eine manpage, nämlich perlvar.pod, da steht sowas
drin.
Code: (dl )
$0


Edit: perl-tag ist buggy\n\n

<!--EDIT|pq|1062332182-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2003-08-31 16:26
#82026 #82026
User since
2003-08-04
5246 articles
ModeratorIn
[Homepage] [default_avatar]
Dafuer verwende ich sehr gerne das Modul FindBin:
Code (perl): (dl )
1
2
use FindBin ();
my $pathToScript = $FindBin::Bin;


Das funktioniert auch, wenn man das Perl-Script aus einem anderen Verzeichnis heraus ausfuehrt...
$0 funktioniert da zwar auch, aber da da meistens relative Pfade angegeben werden, ist noch ein wenig (haeufig fehleranfaelliger) Aufwand noetig, wenn man absolute Pfade haben will.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
gummientchen
 2003-08-31 16:42
#82027 #82027
User since
2003-08-14
26 articles
BenutzerIn
[default_avatar]
Hmm.. FindBin ist zwar prinzipiell schick, geht aber nicht im Taint-Mode :(
(zumindest in v5.6.x)
-- never trust a man who can count to 1023 on his fingers --
pq
 2003-08-31 16:49
#82028 #82028
User since
2003-08-04
12201 articles
Admin1
[Homepage]
user image
[quote=gummientchen,31.08.2003, 14:42]Hmm.. FindBin ist zwar prinzipiell schick, geht aber nicht im Taint-Mode :(
(zumindest in v5.6.x)[/quote]
was? FindBin lässt sich nicht mit -T benutzen?
was für eine fehlermeldung bekommst du denn? bei mir läuft das...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
macMeck
 2003-08-31 16:51
#82029 #82029
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Hab mir das nochmal genau durchdacht und festgestellt, dass das keine Frage von hinbekommen oder nicht hinbekommen war, sondern dass schon der Ansatz sch... war.

Danke trotzdem an euch alle...

macMeck
It all works, as long as it's documented!
<< |< 1 2 >| >> 13 entries, 2 pages



View all threads created 2003-08-31 15:33.