人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PerlをWindows上で動かしたところディレクトリかどうかの判定がうまくいきません。
「表」というファイルを作成して、 -d で結果を取得するとファイルなのにディレクトリと判定されてしまいます。
opendir()も成功してしまいます。文字コードまわりの処理は正しく書いたつもりなのですが。。。

ファイル名を「あ」とした場合は問題ありません。
正しく判定できる方法を教えてください。Win32::OLEなどを利用した方法でもかまいません。

--- ソース ---
use Encode;
use utf8;
use strict;

my $ENCODING = 'cp932';

binmode(STDIN,":encoding($ENCODING)") ;
binmode(STDOUT,":encoding($ENCODING)") ;
binmode(STDERR,":encoding($ENCODING)") ;

my $dir = "C:\\表"; #「表」っていうファイルはある

# ディレクトリかどうか?
if (-d encode($ENCODING, $dir)) {
print "FOUND DIR ". $dir ."\n";
} else {
print "NOT FOUND DIR\n";
}

# ファイルかどうか?
if (-f encode($ENCODING, $dir)) {
print "FOUND FILE". $dir ."\n";
} else {
print "NOT EXISTS \n";
}

# opendirしてみる
opendir(DIR, encode($ENCODING, $dir)) or die $!;
while (my $file = readdir(DIR)) {
$file = decode($ENCODING, $file);
print "FILE: ".$file."\n";
}

--- 結果 ---
FOUND DIR C:\表
NOT EXISTS
FILE: 表

--- 環境 ---
Win XP SP3
ActivePerl 5.10.0 Build 1005

●質問者: mitani1207
●カテゴリ:コンピュータ インターネット
✍キーワード:Dir NOT FOUND Perl print WIN
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● asahiru

http://cocohome.hp.infoseek.co.jp/cocohome/l_moji.html

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ