Re: pfad auslesen

Re: pfad auslesen

am 08.05.2007 13:35:50 von Frank Seitz

Alexander Kainz wrote:

> ich suche nach einer möglichkeit bzw. den codes, wie ich
> einem perl-script seine umgebung vermitteln kann.
>
> was ich brauche: script-name, absoluter pfad
>
> wohlgemeerkt: das script wird von der shell ausgeführt und
> NICHT von einem web-client!

$ perldoc FindBin

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

pfad auslesen

am 08.05.2007 13:36:34 von Patrick Bates

hallo leute!


ich suche nach einer möglichkeit bzw. den codes, wie ich
einem perl-script seine umgebung vermitteln kann.

was ich brauche: script-name, absoluter pfad

wohlgemeerkt: das script wird von der shell ausgeführt und
NICHT von einem web-client!




greets
-/--\-
alex

Re: pfad auslesen

am 09.05.2007 09:29:47 von Ferry Bolhar

Alexander Kainz:

> ich suche nach einer möglichkeit bzw. den codes, wie ich
> einem perl-script seine umgebung vermitteln kann.
>
> was ich brauche: script-name, absoluter pfad

Meinst du soetwas wie:

use Cwd;
$path = cwd . '/' . $0;

> wohlgemeerkt: das script wird von der shell ausgeführt und
> NICHT von einem web-client!

Ich wüßte auch nicht, wie ein Web-Client Perl-Skripts
ausführen kann. Zumindest nicht nach meiner Definition
von "Web-Client".

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at

Re: pfad auslesen

am 09.05.2007 10:51:26 von Frank Seitz

Ferry Bolhar wrote:
> Alexander Kainz:
>>
>>ich suche nach einer möglichkeit bzw. den codes, wie ich
>>einem perl-script seine umgebung vermitteln kann.
>>
>>was ich brauche: script-name, absoluter pfad
>
> Meinst du soetwas wie:
>
> use Cwd;
> $path = cwd . '/' . $0;

Was soll das denn sein?
a) Das "Current Working Directory" ist üblicherweise von
dem Ort, an dem sich das Skript befindet, verschieden.
b) Unter Unix enthält $0 (meist) den gesamten Pfad.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: pfad auslesen

am 09.05.2007 18:45:06 von Ferry Bolhar

Frank Seitz:

> > use Cwd;
> > $path = cwd . '/' . $0;
>
> Was soll das denn sein?
> a) Das "Current Working Directory" ist üblicherweise von
> dem Ort, an dem sich das Skript befindet, verschieden.
> b) Unter Unix enthält $0 (meist) den gesamten Pfad.

a) Kann, muss aber nicht so sein

b) Nein (zumindest bei mir - RH Linux mit Perl 5.8.6 - nicht).
$0 enthält das, womit man das Skript aufgerufen hat. Deswegen
funktioniert's auch:

Wenn ich ein Skript

/home/bol/test/test.pl

habe und

ein

cd /home/bol/test
perl test.pl

mache, bekomme ich genau den obigen Pfad heraus.

Mache ich ein

cd /home/bol
perl test/test.pl

ebenso. cwd() und $0 ergänzen sich jeweils, man
muss nur noch ein '/' dazwischensetzen.

Ich gebe allerdings gerne zu, dass

o) der Ansatz mit Links Probleme hat
o) auf Filesystemen bzw. unter Betriebsystemen, deren
Dateinnamen anders zusammengesetzt sind (z.B. VMS)
nicht funktionieren wird. Aber dafür gibt es ja auch schon
genügend andere Module.

Es ging mir nur um eine einfache Lösung, der OP hat ja
nicht weiter ausgeführt, was er genau wollte.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at

Re: pfad auslesen

am 09.05.2007 21:16:22 von Frank Seitz

Ferry Bolhar wrote:

>>>use Cwd;
>>>$path = cwd . '/' . $0;
[...]
> Wenn ich ein Skript
>
> /home/bol/test/test.pl
>
> habe und
>
> ein
>
> cd /home/bol/test
> perl test.pl
>
> mache, bekomme ich genau den obigen Pfad heraus.
>
> Mache ich ein
>
> cd /home/bol
> perl test/test.pl
>
> ebenso. cwd() und $0 ergänzen sich jeweils, man
> muss nur noch ein '/' dazwischensetzen.

Es funktioniert aber nicht, wenn das Skript

o mit absolutem Pfad gerufen oder
o über PATH gefunden

wird.

(Du hast recht, wenn das Skript mit einem relativen
Pfad gerufen wird, steht auch nur dieser auf $0)

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Re: pfad auslesen

am 09.05.2007 21:23:20 von Slaven Rezic

"Ferry Bolhar" writes:

> Frank Seitz:
>
> > > use Cwd;
> > > $path = cwd . '/' . $0;
> >
> > Was soll das denn sein?
> > a) Das "Current Working Directory" ist üblicherweise von
> > dem Ort, an dem sich das Skript befindet, verschieden.
> > b) Unter Unix enthält $0 (meist) den gesamten Pfad.
>
> a) Kann, muss aber nicht so sein
>
> b) Nein (zumindest bei mir - RH Linux mit Perl 5.8.6 - nicht).
> $0 enthält das, womit man das Skript aufgerufen hat. Deswegen
> funktioniert's auch:
>
> Wenn ich ein Skript
>
> /home/bol/test/test.pl
>
> habe und
>
> ein
>
> cd /home/bol/test
> perl test.pl
>
> mache, bekomme ich genau den obigen Pfad heraus.
>
> Mache ich ein
>
> cd /home/bol
> perl test/test.pl
>
> ebenso. cwd() und $0 ergänzen sich jeweils, man
> muss nur noch ein '/' dazwischensetzen.
>

Dann versuch mal:

dein Skript in /tmp/bla.pl
env PATH=/tmp bla.pl

Das ergibt bei mir, wenn ich mich in $HOME befinde:

/home/e/eserte//tmp/bla.pl

Die richtige Lösung lautet übrigens "use FindBin".

Gruß,
Slaven

--
Slaven Rezic - slaven rezic de

need xpm or ppm output from GD?
http://search.cpan.org/search?mode=module&query=GD::Convert