自身(*.cgi)のフルパスを取得するには?

[上に] [前に] [次に]
J.Naka [E-Mail] 1999/08/28(土) 02:30:28
Perlでフルパス指定のコマンドがありますが、自身(Current)のフルパスを取得する方法ってあるでしょうか?

Aurai 1999/08/28(土) 02:47:49
$0 で実行中のスクリプトを取得できるそうですが
フルパスで返るかどうかはOSにより異なるそうです

B-Cus 1999/08/28(土) 07:19:12
$_ = $0;
$pwd=`pwd`; chop $pwd;
if ( -l $_ ){ $_ = readlink($_); }
s|^([^/])|$pwd/$1|;
1 while (s|[^/]+/\.\./||g);
s|\./||g;
print "$_\n";

とか。

ふじ 1999/08/28(土) 11:43:54
use Cwd;

$current_dir = cwd;

とか。Perl5なら標準モジュールの筈。

J.Naka 1999/08/28(土) 14:08:07
[[解決]]
Auraiさん、B-Cusさん、ふじさん、解答有り難う御座います。

Auraiさん>
 現在使っているInterQで動作さしたいところです。
 InterQのOSはちと前まではWinNTだったはずが
 最近はUNIXになってるようです(^^??

B-Cusさん>
 コード提示有り難う御座います。
 そのままペーストしてやってみると旨くいきました。
 ありがとうさんです。(_ _)

ふじさん>
 InterQのPerl5では動作しましまたが、自宅のPerl5(Jperl)では
 動作しませんでした。$]の値は自宅のほうがバージョン上のよう
 ですが、ライブラリのほうが低いのか良く分かりません(^^;

B-Cusさん>

J.Naka 1999/08/28(土) 14:20:17
ふじさん>
 (笑)自宅の環境変数 PERLLIB が未設定でした。
 Autoexec.batに登録+再起動するとちゃんと動作しまた。(^^;;;
  Perl5ならば、use Cwdのほうが簡単でよいですね(^0^)

J.Naka 1999/08/28(土) 15:50:21
■その後
 フルパスは取得できるんですが、
 URLでなく物理パスのようで、目的には使えないです(^^;
 しようがないから、URLで定数で決めうちにしました(^^;

B-Cus 1999/08/28(土) 19:02:44
やれやれ。最初から目的を詳しく書けばいいものを…。
いつまでたっても質問の仕方がヘタですね。

apacheなら $ENV{REQUEST_URI}、$ENV{SCRIPT_NAME} あたりじゃないの?

J.Naka 1999/08/29(日) 08:38:35
 ども、B-Cusさん。

ほんとうに質問の仕方がヘタッピです(笑)
質問アップの時はあれやこれや思考が駆け回っていて
自分の中では目的語が暗黙の了解事項になっていたり
します(笑)。しかし他人さんに一人よがりの暗黙事項
はわかりやせん(笑)。
と、いうことで、これからはプログラミングスキルならぬ
質問スキルを上げる事に精進したいと思います。(_ _)

で、$ENV{REQUEST_URI}は、REQUEST_URL のタイプミスですか?
両方見てましたが、サーバー(InterQ)&自宅ともに何も未定義環
境変数みたいですが(^^?
$ENV{SCRIPT_NAME}は、URLでなく物理パスが入ってます。

J.Naka 1999/08/29(日) 09:01:05
■訂正 $ENV{REQUEST_URI}

 サーバー(InterQ)の方には、URLが完全ではないですが
はいっていました。。。。タイプミスでは無かった(笑)(_ _)
 自宅のサーバソフト(AnWeb/1.15b)には、入ってないので
目的(サーバー分岐)には使えないです。

あっ、目的は、(今ごろ書くか(^^;)

 同一スクリプトを、
 仮想サーバー(自宅サーバ)とオンラインサーバ(レンタルサーバ)
 の両方で動作させるため、サーバー種の違いをカレントURLから
 判断し、そこで得られたURL文字列をそのままコード上で変数とし
 て使いたい。
 サーバー種の判断を他の(URL違いの以外)方法でやると、判断後
 にURLの設定処理が新たに必要なため、処理簡潔化のためURL判
 断としたい。

です。

おまけ:
 目的の伝達と文章としての冗長性などいかがなものでしょうか?

B-Cus 1999/08/30(月) 00:07:44
> 目的の伝達と文章としての冗長性などいかがなものでしょうか?
いまいちです。あなたの場合、用語の使い方が正確ではないので
(フルパスを取得したいと言ったり、URLを取得したいと言ったり)、
 www.hoge.com
 /~user/index.html
 /home/user/public_html/index.html
 http://www.hoge.com/~user/index.html
のように、実際にどのような値が欲しいのかを書くといいでしょう。

> ほんとうに質問の仕方がヘタッピです(笑)
笑いごとではなく、ちょっとは真面目に考えてくださいね。

[上に] [前に] [次に]