No.2ベストアンサー
- 回答日時:
if($^O eq "MSWin32"){
$cwd=`cd`;
} else {
$cwd=`pwd`;
}
print $cwd;
--------------
ぐらいでいいんじゃないでしょうか
No.8
- 回答日時:
あ~すみません、serverがwinでしたね
なら#7のは使えません
というか結局普遍的に使えるのはCWDしか無いのでは?
どうしても駄目なら
$0 , __FILE__
環境変数のPWD , SCRIPT_FILENAME , PATH_TRANSLATED(IISの場合)
のうち使えるものを選択して試すとか?
No.7
- 回答日時:
コマンドラインからの実行なら $ENV{'PWD'} にフルパスがそのまま入るかと思います。
(CGIでは駄目)CGIの場合は
$ENV{'SCRIPT_FILENAME'} =~ m|[^/]+$|; # これで $` にフルパスが入る
print "現在のディレクトリ = $` <P>\n";# 当然コマンドラインでは駄目
$0 や __FILE__ は少なくともfedora5ではコマンドライン、CGIともにパス無しのfile名
/home/tarou/test.cgi なら test.cgiしか入りません
fedora以外でも Apache+suexecではCGIで実行するとパス無しになったはずです
No.6
- 回答日時:
> Perlでは$0という特殊変数に実行したスクリプトのフルパスが保存されています。
フルパスとは限らないみたいですけど?
実際perlvarの$0の項目にも「フルパスで」名前が格納されるとはかかれていません。
No.5
- 回答日時:
確かに外部コマンド(pwdやcd)を使った方が手っ取り早いですが、それではOS依存になってしまいます。
完全にOS依存にしない形にする場合ですが、Perlでは$0という特殊変数に実行したスクリプトのフルパスが保存されています。
これを利用し、chdirするたびにこの変数の値を書き換えることによりディレクトリパスの管理ができそうです。
# スクリプト起動時のディレクトリ取得
$main::cwd = $0;
$main::cwd =~ s|(.*)/.*|$1|; # ディレクトリ部分のみ抜き出し
&my_chdir('foo');
sub my_chdir{
my $path = shift;
chdir($path);# サブディレクトリに移動
$main::cwd = (略) # ディレクトリ移動ごとに書き換え
}
No.4
- 回答日時:
#1>opendir()でディレクトリ内のファイル一覧を行いたく、また階層も行き来できるようにしたい
カレントディレクトリは、別に取得しなくてもいいんじゃないかなあ。
あと
スクリプトの実行ディレクトリということであれば、
__FILE__ から取り出せるかもしれない。
No.3
- 回答日時:
#2さんの回答に関して。
確かにそれでできるかもしれませんが、汚染チェックにひっかかりませんか?
Cwd.pmの中でも同じようなことをしていますが、
# Find the pwd command in the expected locations. We assume these
# are safe. This prevents _backtick_pwd() consulting $ENV{PATH}
# so everything works under taint mode.
と但し書きがあります。
また、コマンドは絶対パスで呼び出しています。
もちろんこれらのリスクをわかった上で、それでもいいというのなら
止めませんが。
No.1
- 回答日時:
> 、モジュールが入っていないサーバでも動くようにしたいのですがうまくできません・・・
どのような手段を試したのでしょうか?
ざっと見たところ、OSのアーキテクチャによって実際に取得を行う
手段を切り替えているようなので、OSによらず動くようにというのは
多分無理です(バイナリで記述する必要があるものがある)。
この回答への補足
opendir()でディレクトリ内のファイル一覧を行いたく、また階層も行き来できるようにしたいと考えております。cgiファイルひとつでなるべく簡単に記述したいと考えていて、そのファイルを書き換えることなく汎用性高いものを考えています。私自身、RedHat系Linuxばかりなので、OSによりバイナリとは初めて聞き勉強になりました(汗
開発環境はWindows(xampp)なので、Win系サーバでも使えたら良いかなと思います。
いろいろ調べたのですが、コマンド実行してその結果を受けるのが一番わかりやすいのではと思っておりますが多くの方はこの場合どういう考え方をされるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- Windows 10 コマンドプロンプトの使い方 1 2022/10/13 14:43
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) 変数のなかみを辿る方法(Python) 9 2023/03/03 10:18
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
openした後、closeしないでプロ...
-
テキストファイルで提出とは?
-
Perlのエラーについてご教授く...
-
perlのrequireの動き方について...
-
Perl の外部モジュールの利用方法
-
Windows10においての『Perl』の...
-
Perlで特定文字列から特定文字...
-
Perlでsprintf("%02d",$month)...
-
フローチャート 九九
-
perl LWPでURLにアクセスした時...
-
Perlで、「が」を、「...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
perlをバージョンアップしたら...
-
openした後、closeしないでプロ...
-
Perlで特定文字列から特定文字...
-
Wallpaper Engineでおすすめの...
-
Perlのエラーについてご教授く...
-
アルファベットに付いて質問し...
-
Strawberry Perl for Windows ...
-
bashスクリプト
-
テキストファイルで提出とは?
-
Perl の外部モジュールの利用方法
-
#!/usr/bin/perlで書きだしたCG...
-
Windows10においての『Perl』の...
-
perlのflock関数でロックをかけ...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
画像が表示でnull; this.src
-
ターミナルで特定の文字と文字...
-
英数文字列のうちの数値を4桁に...
おすすめ情報