日本語ディレクトリ名で吐血

2019/5/3 [20:49:02] (金) 天気

今さら、ハマったんでメモしておこう。


perl の ファイルテスト演算子 -d とかディレクトリを開くopendir()でディレクトリとして認識してくれず、そのディレクトリだけ見えない状態だった。


WINDOWS10で、ActivePerl。

日本語のディレクトリ名で、たぶんこいつだろう、という見当はついていた。


「―」←こいつ。

utf16 2015

utf8 E28095

euc A1BD

shiftjis 815c


罫線というか日本語のダーシ?ダッシュ?に使われる記号。


↓グーグル様を駆け巡ってたどり着いたのがこちら

http://nomenclator.la.coocan.jp/perl/shiftjis.htm

「Shift-JISテキストを正しく扱う」

助かりました。ありがとうございます。


「―」はshiftjisだと「815c」で、この「\x5c」がファイル名やパスの末尾にあるとperlはうまく扱えない、らしい。


回避するには

ディレクトリ名の末尾に「’/.’」path区切りをつけてカレントディレクトリのピリオドをつける。苦肉の策ではあるけど、これで無事ディレクトリを辿ることができた。


具体的には

-d dirname

てなことやってたところを

-d dirname . ’/.’

などとやって無事perlからディレクトリが見えるようになった。

(再帰的にディレクトリを辿るサブルーチンにさっそく採用させていただいた)


ディレクトリ名に日本語を使いたくはないんだけど、仕様で必要とされるケースがあるので、しかたなく。

にしても、ほんと今さらなトラップに仰け反ったぞ。ほんとびっくりした。


image
<<2019/05>>
   1234
567891011
12131415161718
19202122232425
262728293031

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: