Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5620[/thread]

Aktuelles Verzeichnis auslesen

Leser: 12


<< |< 1 2 >| >> 16 Einträge, 2 Seiten
Strat
 2003-08-15 19:51
#51433 #51433
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Relais,15.08.2003, 17:04]
[E|B
,15.08.2003, 16:19]Das ihr aus allem bisschen so ne Diskussion machen könnt ist beeindruckend! *g*

Nett nicht? :) Ein redefreundliches Völkchen, die Perl-Community 8)[/quote]
10 Programmierer == 20 Meinungen :-))
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
[E|B]
 2003-08-15 16:15
#51434 #51434
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hi!
Kurze Frage, kurze Antwort: Wie lese ich mit readdir das aktuelle Verzeichnis aus, in dem das Script sich befindet?

Code: (dl )
opendir(D, "\/");


So funtzts schonmal nicht. Wer weiß, ich es es richtig angeben muss?
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]
ronald
 2003-08-15 16:23
#51435 #51435
User since
2003-08-15
76 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
Hi!
Kurze Frage, kurze Antwort: Wie lese ich mit readdir das aktuelle Verzeichnis aus, in dem das Script sich befindet?


Hi,

Kurze Frage:
was den nun?
das aktuelle Verzeichnis
oder das Verzeichnis, in dem sich das Script befindet?

Das aktuelle Verzeichnis ist '.'

Das Verzeichnis, in dem sich das Script befindet, musst du erst bestimmen:
$0 enthält  Verzeichnis mit Skriptnamen. Also:
Code: (dl )
1
2
use File::Basename;
my $dir = dirname($0);
[E|B]
 2003-08-15 16:27
#51436 #51436
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Stimmt! An '.' hätte ich jetzt nicht gedacht! Man merkt, es wird kühler! *g*
Danke!
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]
pq
 2003-08-15 16:56
#51437 #51437
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
[quote=ronald,15.08.2003, 14:23]Das Verzeichnis, in dem sich das Script befindet, musst du erst bestimmen:
$0 enthält  Verzeichnis mit Skriptnamen. Also:
Code: (dl )
1
2
use File::Basename;
my $dir = dirname($0);
[/quote]
oder auch einfach: CPAN:FindBin
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
Crian
 2003-08-15 17:00
#51438 #51438
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
use FindBin;
my $dir = $FindBin::Bin;
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
snarf
 2003-08-15 17:13
#51439 #51439
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
[quote=ronald,15.08.2003, 14:23]
Code: (dl )
1
2
Hi!
Kurze Frage, kurze Antwort: Wie lese ich mit readdir das aktuelle Verzeichnis aus, in dem das Script sich befindet?


Hi,

Kurze Frage:
was den nun?
das aktuelle Verzeichnis
oder das Verzeichnis, in dem sich das Script befindet?

Das aktuelle Verzeichnis ist '.'

Das Verzeichnis, in dem sich das Script befindet, musst du erst bestimmen:
$0 enthält  Verzeichnis mit Skriptnamen. Also:
Code: (dl )
1
2
use File::Basename;
my $dir = dirname($0);
[/quote]
Kleiner Tipp: $0 ist auch für so manche Überraschung gut, wenn das Skript nämlich mit relativem Pfad aufgerufen wird, dann liefert $0 auch nur den relativen Pfad zurück !

Es empfiehlt sich also, $0 auf /^\// zu prüfen ... und dann gegebenenfalls mit Cwd (Modul Cwd, siehe dort) zu ergänzen!
Crian
 2003-08-15 17:15
#51440 #51440
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Wie schon gesagt, tut FindBin genau das, was Du brauchst. Das lässt sich auch mit use lib $FindBin::Bin/modules o.ä. gut nutzen, um lokal zum Skript liegende Module einzubinden, die sonst nicht gefunden werden, wenn das Skript aus einem anderen Verzeichnis aus aufgerufen wird.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
snarf
 2003-08-15 17:21
#51441 #51441
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
[quote=Crian,15.08.2003, 15:15]Wie schon gesagt, tut FindBin genau das, was Du brauchst. Das lässt sich auch mit use lib $FindBin::Bin/modules o.ä. gut nutzen, um lokal zum Skript liegende Module einzubinden, die sonst nicht gefunden werden, wenn das Skript aus einem anderen Verzeichnis aus aufgerufen wird.[/quote]
... ohoh ... bloß keinen Glaubenskrieg über das Einbinden lokal liegender Skripte an dieser Stelle ;-)

Und trotzdem, meine bevorzugte Variante in MultiUser-Umgebungen: mit CWD das BaseDir zu Anfang des Skriptes bestimmen und danach alle weiteren Skripte relativ adressieren (BaseDir in front, natürlich). Oder aber (wenn's ums "Module-Sparen" geht, das BaseDir einfach hard-coden!
Crian
 2003-08-15 17:36
#51442 #51442
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Und warum? FindBin ist Teil des Standard-Perls, was spricht dagegen?

Warum soll das in Multi-User-Umgebungen anders sein?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2003-08-15 19:51.