パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

[質問] Perlのファイル検査 -f とスペースの入ったファイル名」記事へのコメント

  • 皆様、ありがとうごさいました。
    -fはスペースの入ったファイル名でも問題はありませんでした。

    作っていたスクリプトの 
    open (MD5,"md5sum $filename |")
    のところで、$filenameが"file space"では上手く行かなかったのを-fの問題だと勘違いしました。大変お騒がせ致しました。失礼いたしました。

    つまり、
    "file space"というファイルがあり、
    $filenameが "file space"の時、
    -f $filenameはtrueになるが、
    open (MD5,"md5sum $filename |")
    ではエラーになるということでした。

    $filenameが"file\ space"ならば md5sumでもOK。

    • すでに自力で答を得ているかもしれませんが御参考までに。

      $filename = "file space";
      open (MD5,"md5sum $filename |");

      のような2引数のopenでパイプを作ると次のように動きます。

      1. Perlが変数$filenameを展開。("md5sum file space |")
      2. Perlが末尾のパイプ記号を見て、残りを/bin/shに渡す。("md5sum file space")
      3. /bin/shが文字列を空白で区切る。("md5sum", "file", "space")
      4. /bin/shが"md5sum"を探して引数("md5sum", "file", "space")を渡す。
      5. md5sumが引数を見て"file"と"space"のMD5を計算しようとする。

      Perlが/bin/sh経由でmd5sumを実行するので、 空白に限らず、/bi

「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常

処理中...