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

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
<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】