OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

globがスペースを含むフォルダの中を

  • 困ってます
  • 質問No.226985
  • 閲覧数571
  • ありがとう数3
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 77% (530/685)

Win2k + JPerlです。
スペースを含むフォルダの中身を、globが列挙できません。
なんででしょう。

ちなみにWindowsなので、Shift_JISじゃないと、ファイルリストが列挙できません。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 58% (190/327)

きちんと調べたわけではありませんが、原因については推測できます。 PerlはUNIXの世界から生まれた言語です。 UNIXでは、空白を含むファイルやディレクトリは原則的に許されませんので、Perlの仕様もそれを前提としています。文字コード云々の問題ではないので、JPerlであっても同じです。Windowsに移植される際にも、オリジナルのPerlから拡張された機能・OSの仕様上実現できない機能(fork ...続きを読む
きちんと調べたわけではありませんが、原因については推測できます。
PerlはUNIXの世界から生まれた言語です。
UNIXでは、空白を含むファイルやディレクトリは原則的に許されませんので、Perlの仕様もそれを前提としています。文字コード云々の問題ではないので、JPerlであっても同じです。Windowsに移植される際にも、オリジナルのPerlから拡張された機能・OSの仕様上実現できない機能(fork等)の削除はありますが、同じ名前の機能が仕様変更される事は基本的には無いはずです。これは、ソースレベルの互換性を最大限にする為、必要不可欠の事だと思います。

フォルダ名を指定する際に、8+3の昔の形式(つまりショートファイルネーム)で指定する事で恐らくは回避できるのではありませんか?
Program Filesがprogra~1等となっているあれです。

他に、もっとうまいやり方を知っている人がいたら、フォローお願いします。
お礼コメント
haporun

お礼率 77% (530/685)

>原因については推測できます
それは、私も考えましたが・・・。

でもunixでもスペースの前に\を入れてやれば結構指定できるので、\いれましたがダメでした。

cd program\ files

とか。
forkも最近はWINでエミュされてますし。

ショートネーム使うことは考えたんですが、長いファイル名を短いファイル名に変換する関数がないんですよね。

<*>は最初から短いファイル名で出てくるのですが、glob又はopendir+readdirだと長いファイルが出てくるんですよね。
どうも、順番があってないらしく、させられないし。

どうしようかなぁ。
投稿日時 - 2002-03-02 00:55:01
  • 回答No.2

@list = <Program\\ Files\\*>; です。 バックスラッシュ一つだけだとエスケープだと思われちゃうので2個続けて書きます。Windowsのパスを指定する時はglobに限らず結構同じことが起きるので同じ対応が必要になります。 ちなみこの辺の話はperlwin32.podに明記されます。 あとWindowsのロングネームとショートネームの変換はActiv ...続きを読む
@list = <Program\\ Files\\*>;
です。
バックスラッシュ一つだけだとエスケープだと思われちゃうので2個続けて書きます。Windowsのパスを指定する時はglobに限らず結構同じことが起きるので同じ対応が必要になります。

ちなみこの辺の話はperlwin32.podに明記されます。


あとWindowsのロングネームとショートネームの変換はActivePerlの場合、Win32モジュールのWin32::GetShortPathName()とWin32::GetLongPathName()を使います。
お礼コメント
haporun

お礼率 77% (530/685)

>バックスラッシュ一つだけだと
Program\\ Files\\って文字列として 'Program\ Files\' ですよね。
これをglobに渡すんですか?
彼は更にエスケープを認識するコマンドに文字列を渡してるんですか?

opendirはこの限りじゃないみたいですね。

>Win32::
そっかー、APIって実装されてるんですね。
これって

use Win32

ってするんでしたっけ?
クラスは扱ったことないからなぁ(しらべしらべ・・・、不安。
投稿日時 - 2002-03-08 21:12:17
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ