Wie kann ich den absoluten Pfad meines Perl-Programm von seinem relativen Pfad bekommen?

StackOverflow https://stackoverflow.com/questions/1033474

  •  06-07-2019
  •  | 
  •  

Frage

Ich brauche den vollständigen Pfad zur Perl-Skript finden Ich bin derzeit ausgeführt wird, das heißt

  • für ~ / dir / my.pl Ich würde es brauchen "/home/user/dir/my.pl" zu sein. Die $0 gibt mir "~ / dir / my.pl".

  • für ./my.pl würde ich noch brauchen "/home/user/dir/my.pl"

usw. Dank!

War es hilfreich?

Lösung

Mit dem FindBin Modul:

$ cat /tmp/foo/bar/baz/quux/prog
#! /usr/bin/perl

use FindBin;

print "$FindBin::Bin/$FindBin::Script\n";

$ PATH=/tmp/foo/bar/baz/quux prog
/tmp/foo/bar/baz/quux/prog

$ cd /tmp/foo/bar/baz/quux

$ ./prog 
/tmp/foo/bar/baz/quux/prog

Andere Tipps

Es klingt wie Sie für die Cwd :: abs_path in der genau die gleiche Art und Weise.

Sie sollten einen Blick auf FindBin oder FindBin :: Grund .

Sieht aus wie Sie nur die Pfade zu ihren absoluten Werten erweitern müssen. Prüfen Sie diesem Artikel dafür, wie das zu tun.

Mit FindBin Modul

Viele der Konzepte im Fall bricht erwähnt, dass die Datei selbst ein symbolischer Link ist. Ich in der Regel meine Skripte in der folgenden Art und Weise starten:

use strict;
use English;
use warnings;

use Cwd qw(realpath);
use File::Basename;
use lib &File::Basename::dirname(&Cwd::realpath($PROGRAM_NAME));

Wir hoffen, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top