エクスプローラからPerlを起動する際のカレントディレクトリが、Windows 7 (x64) と Windows XPで違ってしまいます。
Windows XPの場合は起動した.plファイルの場所がカレントディレクトリとなり、特に問題はないのですが、Windows7の場合 C:\Windows\System32 がカレントディレクトリになってしまうようです。
以下の前提条件で、Windows 7 でも XPと同様の動作を実現する方法はないでしょうか。
[起動方法]
.plファイルを右クリック ⇒「プログラムから開く」⇒ Perl Command Line Interpriter
(既定のプログラムはメモ帳に設定)
[環境]
Windows (7 x64 or XP) + ActivePerl 5.14.2
No.1
- 回答日時:
それは、単にUACにかかわる、「管理者として実行」の弊害ではないでしょうかね?
分からなければ、”Windows7 UAC 管理者として実行”
http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …
で検索してください。
http://search.yahoo.co.jp/search?p=%22Perl%20Com …
それと、"Shell とは" "CMD" "起動パスの変更"
などで検索してください。
通常、アプリが指定していない限り、ユーザーホームが起動ホームになります。CMD環境で
>set
でUSERPROFILEですね。
システムのホームはsystem32ですね。
XPの仕様をWindows7に求めるのは、日本食レストランで、フランス料理を注文するほど、ばかげたことであり、意味がありません。スマホでWindows7の仕様を求めるような物です。
ショートカットなどラッパーを利用しましょう。
No.2ベストアンサー
- 回答日時:
起動時のカレントディレクトリが異なる理由や変え方は分かりませんが、
スクリプト側でしょっぱなに chdir(dirname($0)); のようにして
明示的に移動してしまってはいかがでしょうか。
use Cwd;
use File::Basename;
my $scriptDir = dirname($0);# あるいは __FILE__ から取り出す
printf("%s: %s\n", '$0', $0);
printf("%s: %s\n", '__FILE__', __FILE__);
printf("%s: %s\n", 'cwd', cwd());
printf("%s: %s\n", 'ENV-p', $ENV{'PWD'});
printf("%s: %s\n", 'ENV-s', $ENV{'SCRIPT_FILENAME'}); # CGIで動かすときはこれを使う?(未確認)
print "\n*** chdir to $scriptDir\n";
chdir($scriptDir);
printf("%s: %s\n", 'cwd', cwd());
$0 や __FILE__ に「フルパス」が入っているかどうかは環境依存らしいですが、
Windows(7(x64) および XP(x86)) で ActivePerl (5.14.2)を動かす分には
期待通りに動作するようです。
この回答への補足
【追記】
質問内容の修正はできないようなのでこちらに失礼します。
ActiveStateのフォーラムに以下のような記事を見つけました。
http://community.activestate.com/forum-topic/can …
Windows Vistaにおいて「プログラムから開く」からPerl Command Line Interpreterを選択した場合、起動パラメータがうまく引き渡されない現象があるようです。
また、Process Explorerで起動方法によるプロセスの状況を調べたところ、Windows7においては以下のような構成となっていました。
[プログラムから開く⇒Perl Command Line Interpreter]
svchost.exeの子プロセスとして起動(Current Directory は C:\Windows\System32\)
[ファイルを開くプログラムの選択⇒Perl Command Line Interpreter(またはダブルクリック)]
親プロセスなしで起動(Current Directory なし)
これが直接的な原因かどうかはわかりません。
(サンプルプログラムを作成して確認したところ、どちらのケースでも起動パラメータは正常に取得できましたので、ActivePerl特有の動作かもしれません)
No.3
- 回答日時:
>質問内容をよく読んだうえで、内容を一度ご自身で整理してから回答されることをお
勧めします
全く同じ事を、あなたにお返しします。
内容から、ちょっとぐぐれば、でてくるようなことを、いちいち質問してくるなんて・・・・
(別にぐぐらなくても、技術者なら、こうできるなんて、簡単に、別方法をやっています。)
だから、素人用に、在る程度の予測される事を、全部記載したのですよ。最後まで読めば、こうすればできますよ、と言うアドバイスを記載しています。
内容をよく読んでから、反抗しましょうね。自作自演、釣り、宣伝、社員等に多い質問ですね。よくひっかかってやっています。
ちなみにNo2さんが提示したようなコードをラーパーて、いうのですがね。技術向けの質問・回答なので、おわかりになるかと。
もうひとつおまけに
>、起動パラメータがうまく引き渡されない現象があるようです。
は、こんぴゅーたーの世界での表現としては、ありえません。
この回答への補足
僕は「こんぴゅーたーの世界」のことはよく分からないので、lupin-333333
さんの回答を読み飛ばしていました、すいません。
時間が空いたら日本食とかフランス料理について調べてみるのもいいですね。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 VirtualBox からWindows XP を起動すると画面が真っ暗になってしまいました 4 2023/07/09 16:19
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Windows 7 Windows7でMicrosoft VirtualPC2007 SP1を使用する 9 2022/11/17 13:12
- その他(ゲーム) Windowsアスカ見参プレイするのに下の通りのが必要みたいですがメモリー、ビデオメモリーHDD別々 3 2022/09/19 23:24
- Windows 10 教えてgooの OS の部分に Windows11 を追加してほしい 2 2022/08/11 19:09
- その他(コンピューター・テクノロジー) Windows 11 Version 22H2 の (KB5023706)のアップデートに失敗する 2 2023/03/25 21:06
- 教えて!goo 教えてgooの OS の部分に Windows11 を追加してほしい 2 2022/08/09 17:06
- その他(OS) Ubuntuに仮想環境いれて古いwindows動かしたいんですが、OSイメージ無料で手に入りますか? 2 2023/03/09 23:49
- ノートパソコン ハードディスクとCPUを入れ替えたい 6 2023/07/09 00:17
- Windows 10 VirtualBox 6.1.36 インストール時にエラーが表示されます 2 2023/07/09 11:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのプログラミング 部分入れ...
-
Strawberry Perl for Windows ...
-
アルファベットに付いて質問し...
-
Perlで同じフォルダにある任意...
-
perlでリテラル値はメモリにど...
-
ペプシコーラとコカ・コーラとD...
-
perlをバージョンアップしたら...
-
openした後、closeしないでプロ...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
perlについての質問
-
Blenderについて
-
Perl の外部モジュールの利用方法
-
perl このテキストファイルを簡...
-
Perlでファイルの末尾から指定...
-
秀丸での一括変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
perlをバージョンアップしたら...
-
INDIRECT 横に再度抽出したい
-
Perl の外部モジュールの利用方法
-
Perlで特定文字列から特定文字...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
TeraPadエディターの操作方法に...
-
アルファベットに付いて質問し...
-
perlのflock関数でロックをかけ...
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
Wallpaper Engineでおすすめの...
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perlでリテラル値はメモリにど...
-
画像が表示でnull; this.src
おすすめ情報