1
2
3
4
BEGIN {
$0 =~ m~(.*)/[^/]+~ || $0 =~ m~(.*)\\[^\\]+~;
$1 ? (unshift @INC, $1) : (@INC = reverse @INC);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl use strict; use warnings; use 5.024; use utf8; BEGIN { $0 =~ m~(.*)/[^/]+~ || $0 =~ m~(.*)\\[^\\]+~; $1 ? (unshift @INC, $1) : (@INC = reverse @INC); } say "Programm: $0"; say '@INC: '; say for @INC;
1
2
3
4
5
6
7
8
9
10
11
12
13
test@debora:~$ perl /media/sf_SHARED/a/a.pl
Programm: /media/sf_SHARED/a/a.pl
@INC:
/media/sf_SHARED/a
/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.36.0
/usr/local/share/perl/5.36.0
/usr/lib/x86_64-linux-gnu/perl5/5.36
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl-base
/usr/lib/x86_64-linux-gnu/perl/5.36
/usr/share/perl/5.36
/usr/local/lib/site_perl
1
2
3
4
5
6
7
T:\>perl X:\media\SHARED\a\a.pl
Programm: X:\media\SHARED\a\a.pl
@INC:
X:\media\SHARED\a
C:/strawberry/perl/site/lib
C:/strawberry/perl/vendor/lib
C:/strawberry/perl/lib
1
2
3
4
5
6
X:\media\SHARED\a>perl a.pl
Programm: a.pl
@INC:
C:/strawberry/perl/lib
C:/strawberry/perl/vendor/lib
C:/strawberry/perl/site/lib
2024-04-28T16:01:06 GwenDragonVielleicht befindet sich der Gast genau im Verzeichnis des Perl-Programms und hat das gestartet, dann kann @INC nix außer der aus der Perl-Installation selbst enthalten, denn $0 ist ja ohne Pfad.
use Cwd qw(getcwd);
2024-04-30T16:31:56 rostiFalls Dir der Unterschied nicht klar ist:
. ist das Verzeichnis von dem aus der Perlinterpreter aufgerufen wird
$FinBin::Bin jedoch ist das Verzeichnis in dem sich das Perlscript befindet.
Ds heißt, daß . und $FinBin::Bin unterschiedliche Verzeichnisse sein können.
In Fakt bekommst Du das Verzeichnis . mit
Code (perl): (dl )use Cwd qw(getcwd);
QuoteUnd wofür und wie wird das dann verwendet und eingebunden? In einem Shell-Skript? Ein CGI? Ein Cron-Job?Bin jetzt auf einem neuen Server (OS Alma8) und es funktioniert nicht mehr.
Hat jemand einen Änderungsvorschlag?