ひまつぶし雑記帖

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

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

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

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

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

「―」←こいつ。
utf16 2015
utf8  E28095
euc   A1BD
shiftjis 815c

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

↓グーグル様を駆け巡ってたどり着いたのがこちら
https://nomenclator.la.coocan.jp/perl/shiftjis.htm
「Shift-JISテキストを正しく扱う」
助かりました。ありがとうございます。

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

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

具体的には
-d dirname
てなことやってたところを
-d dirname . '/.'
などとやって無事perlからディレクトリが見えるようになった。
(再帰的にディレクトリを辿るサブルーチンにさっそく採用させていただいた)

ディレクトリ名に日本語を使いたくはないんだけど、仕様で必要とされるケースがあるので、しかたなく。
にしても、ほんと今さらなトラップに仰け反ったぞ。ほんとびっくりした。

image 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ところてんx5

2024/2/21 06:50

スパム騒ぎも収束したっぽいのでメンション受付のフォロー限定を解除しよう。
今回の騒ぎのおかげで、1つの投稿の中に複数のメンションがあったらスパムとして処理する、てのを実装したしな

2024/2/20 13:55

どこで漏れてるよなあ、絶対。
とりあえずdiffで差分を取るところから始めるしかなくて。でもボリュームがあるので、winmergeを使って目で追う集中力なんてもはや1mmもない。コマンドラインでdiffをを使ってその結果だけを表示させるスクリプト、というのが落としどころか。ディレ...

2024/2/20 13:42

今回、けっこうボリュームのあるものなので目で探してひとつずつ確認修正作業、なんて「絶対」(世の中には絶対はないんだけどこれは絶対)にミスが入る。
こんなことになると、結局検証用のスクリプトを書いて機械的に洗ってみることになる=余分なスクリプトを書かなきゃいけない…orz

検索
<<2019/05>>
   1234
567891011
12131415161718
19202122232425
262728293031

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版