Perlでディレクトリの絶対パスを取得する方法は?


#!/usr/local/bin/perl -w
use Cwd 'realpath';
print Cwd::realpath( '~/' ), "\n";
# => Use of uninitialized value in print at install.pl
# Cwd::realpath( $file_NOT_DIR );

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/01/30 20:16:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:khoshi3 No.2

回答回数71ベストアンサー獲得回数12

ポイント100pt

~ は perlを実行したユーザのホームということでよろしいですか? であれば、ちょっとダサイけど、以下のようなのはいかがでしょうか? :

(最終行がなくともシンボリックリンクを辿らないPATHはgetできます)

#!/usr/bin/perl -w

use Cwd 'realpath';

my $process_real_uid = $<;

my $homedir = (getpwuid($process_real_uid))[7];

print Cwd::realpath($homedir), "\n";

id:radio3

素晴らしい!!

成功しました。

お見事でした。m(_ _)m

2008/01/30 20:14:53

その他の回答1件)

id:zalop No.1

回答回数175ベストアンサー獲得回数5

id:radio3

ディレクトリではだめですね。

use File::chdir;

$CWD = '~/'; # => Failed

ホームディレクトリ ~/ の絶対パスを取得する方法

ありませんでしょうか?

2008/01/30 19:32:39
id:khoshi3 No.2

回答回数71ベストアンサー獲得回数12ここでベストアンサー

ポイント100pt

~ は perlを実行したユーザのホームということでよろしいですか? であれば、ちょっとダサイけど、以下のようなのはいかがでしょうか? :

(最終行がなくともシンボリックリンクを辿らないPATHはgetできます)

#!/usr/bin/perl -w

use Cwd 'realpath';

my $process_real_uid = $<;

my $homedir = (getpwuid($process_real_uid))[7];

print Cwd::realpath($homedir), "\n";

id:radio3

素晴らしい!!

成功しました。

お見事でした。m(_ _)m

2008/01/30 20:14:53
  • id:khoshi3
    いるか有難うございました。すみません、遅ればせながら補足させてください。
    CGIなどでApacheから呼び出される等で環境変数が期待できない場合を除き、以下のコードでも良いと思います。:
    my $homedir = $ENV{'HOME'};

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません