※ ChatGPTを利用し、要約された質問です(原文:chdirがうまくできない)
chdirがうまくできない
このQ&Aのポイント
WindowsXP&Cygwin環境でchdirがうまくできない問題が発生しています。ディレクトリ移動が正常に行われず、ファイル処理ができません。
dir.txtからサブディレクトリ名を読み取り、そのディレクトリに移動し、ファイル処理をする必要がありますが、移動できていない状況です。
ディレクトリ移動に関してテキストの扱い方が間違っている可能性があります。直接ディレクトリ名を指定した場合は正常に移動できることから、テキストの読み取り方法が問題と考えられます。
はじめまして。hiro0777と申します。
perl初心者です。
お恥ずかしい内容なのですが、アドバイスいただければと思います。
環境はWindowsXP&Cygwinです。
質問内容:chdirがうまくできない。(ディレクトリ移動がうまくいかない)
・カレントディレクトリには、いくつかのサブディレクトリがあり、
サブディレクトリ名のみが書かれたファイル(dir.txt)がある。
dir.txtには「480iacrlc2」「480iacscan」といったディレクトリ名が1行ずつ記載。
・dir.txtから1つずつサブディレクトリ名を読み取り、
そのディレクトリに移動し、ファイル処理をする。
#ここでコマンド引数にdir.txtを指定。
open(DIR, $ARGV[0]) || die "can't open $ARGV[0]\n";
while(1){
chomp($dir = <DIR>);
#print "$dir\n";
chdir("$dir") or die "Cannot change directory '$dir'\n";
#system("pwd");
###以降ファイル処理。
}
上記のようにやったのですが、うまくディレクトリを移動してくれません。
ちなみに以下のように直接ディレクトリ名を指定した場合はうまくいきました。
open(DIR, $ARGV[0]) || die "can't open $ARGV[0]\n";
while(1){
$dir = "480iacrlc2";#ファイル名を直接指定したら移動した。
chdir("$dir") or die "Cannot change directory '$dir'\n";
#system("pwd");
###以降ファイル処理。
}
テキストの扱いかたがいけないのかなぁと想像しているのですが。
どなたかご教授いただければ幸いです。
よろしくお願いいたします。
お礼
Tacosanさん、ご回答ありがとうございました。 自己解決できました。 結論は、Cygwin上の文字コードの問題でした。 http://perl.g.hatena.ne.jp/Cress/20070226 内容としては上記のようなものになります。 お騒がせしました。以上です。