Perl 獲取當前指令碼的絕對路徑

2021-07-26 15:57:39 字數 1193 閱讀 9001

前言

你寫的指令碼(或程式)的應用場景肯定有很多,如:本機登入使用者在程式所在的目錄下執行;本機登入使用者在根目錄下執行;或者是遠端使用者使用ssh呼叫。

而此時,你的程式涉及到一些檔案的讀/寫操作,這時就需要以當前程式所在絕對路徑為檔案路徑座標基點--以定位讀/寫檔案的所在,才能成功地讀寫檔案。

1. 錯誤方式之一

use cwd;

my $cwd = getcwd();

print "cwd path = "

,$cwd,

"\n"

; 這種方式:

a.在本機登入使用者在程式所在目錄下執行該程式時

正確--獲得該程式的絕對路徑。

b.本機登入使用者在根目錄下執行和遠端使用者使用ssh呼叫獲得的

路徑皆為「/root」

2. 錯誤方式之二 #!

/usr/bin/perl

use cwd;

use file

::basename;

my $cwd;

print "\$0 = "

,$0,

"\n"

;if(

$0 =

~ m)

else

print "path = "

,$cwd,

"\n"

; 這種方式:

a. 本機登入使用者在程式所在目錄下使用 #.

/test_program.pl

執行該程式時會出錯--絕對路徑會多乙個「.」。如「/opt/***/.」。

3. 正確的方式

use file

::spec;

print "\n"

;my $path_curf =

file

::spec-

>rel2abs(__file__)

;print "c path = "

,$path_curf,

"\n"

;my (

$vol, $dirs, $file)=

file

::spec-

>splitpath(

$path_curf)

;print "c dir = "

, $dirs,

"\n"

; 使用這種方式就能任何場景下得到正確的當前程式的絕對路徑「$dir」。

頂0

Ruby中獲取當前指令碼的絕對路徑

在ruby 中,以下 可以獲得當前指令碼的絕對路徑 require pathname puts pathname.new file realpath 將以上 儲存在test1.rb中,然後放在d盤的根目錄下。測試的時候我們進入c盤,執行ruby d test1.rb,控制台會輸出當前指令碼的絕對路徑...

JS魔法堂 獲取當前指令碼檔案的絕對路徑

一 前言 當寫模組載入器時,獲取當前指令碼檔案的絕對路徑作為基礎路徑是必不可少的一步,下面我們一起來 一下這個問題吧!二 各大瀏覽器的實現方式 a chrome和ff 超簡單的一句足矣!var getcurrabspath function 這裡利用了物件 document.currentscrip...

JS魔法堂 獲取當前指令碼檔案的絕對路徑

一 前言 當寫模組載入器時,獲取當前指令碼檔案的絕對路徑作為基礎路徑是必不可少的一步,下面我們一起來 一下這個問題吧!二 各大瀏覽器的實現方式 a chrome和ff 超簡單的一句足矣!var getcurrabspath function 這裡利用了物件 document.currentscrip...