ハードなソフトの話

アクセスカウンタ

zoom RSS Windows で Perlのglobを正しく動作させる

<<   作成日時 : 2009/06/23 22:44   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

Windowsでも、ついついUNIX感覚でglobを使ってしまう。
パスにスペース文字が含まれてさえいなければ、まあまあ正しく動く。
たとえば、手元のWindowsで次のプログラムを実行すると、
print $_,"\n" for (<c:\\*.*>);

次のような結果になる。
c:\$Recycle.Bin
c:\Apache
c:\autoexec.bat
c:\Boot
c:\bootmgr
c:\BOOTSECT.BAK
(…以下省略…)

しかし、c:\Program Filesの中なんで見ようと思って次のプログラムを実行すると
print $_,"\n" for (<c:\\Program Files\\*>);

こんな風になってしまう。
c:./Program

明らかに Program というフォルダを探している。
この件については次の方法を使う手もあるが…
  • スペースを含むパスをglobができない場合の解決方法
    http://blog.ohanasiya.net/index.php?m=blog&eid=1ed2fbfcfdb33f149108bb65dda65099107f9c5d


  • しかし、少々複雑である。
    CPANかPPMが使えるならFile::Glob::Windowsをインストールしたほうがいい。
    CPANが使えるなら
    cpan File::Glob::Windows

    ActivePerlならppmで
    ppm install File-Glob-Windows

    では、先ほどのプログラムに1行、加えてみる
    use File::Glob::Windows;
    print $_,"\n" for (<c:\\Program Files\\*>);

    結果はこのとおり
    c:\Program Files\.
    c:\Program Files\..
    c:\Program Files\ActiveState Perl Dev Kit 8.0.1
    c:\Program Files\Adobe
    c:\Program Files\Apache Group
    c:\Program Files\Apple Software Update
    (…以下省略…)

    すばらしいことに、$File::Glob::Windows::encodingをつかえば現在のコードページも取得できるので日本語でも韓国語でもUTF8変換していろいろできる。

    たていすさん、ありがとう!( http://d.hatena.ne.jp/tateisu/20081108/1226127780)

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 3
なるほど(納得、参考になった、ヘー)
驚いた
ナイス

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Windows で Perlのglobを正しく動作させる ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる