アプリ版:「スタンプのみでお礼する」機能のリリースについて

をコマンドラインで実行すると
ファイルをオープンできないとのエラーが出ます。
ちなみに
perl -p -i.bak -e "!a!A!g" x.txt
ならばOKです。
ディレクトリ内のすべてのフィルに適用したいのですがどうしたらいいでしょうか?

WindowsXP に最新版のPerlを入れて実行しています。

A 回答 (3件)

perl -i.bak -p -e "BEGIN{@ARGV=split('\0',`perlglob @ARGV`)}s/a/A/g" *


のようにしてみて下さい。
たびたびこういうことが必要なら、バッチとPerl を使って簡略化すればいいと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうします。

お礼日時:2006/04/22 06:55

UNIX ならシェルが展開するんだけど DOS とか Windows だと自分で展開しなきゃならない. なので, ちょっと意味が変わるけどこれが一番近いかな?


for /F "delims=: tokens=*" %f in ('dir /B /A-D') do @perl -p -i.bak -e "!a!A!g" "%f"
UNIX に翻訳すると
for f in `dir *`; do perl -p -i.bak "!a!A!g" "$f"; done
のような感じ.
    • good
    • 0
この回答へのお礼

ありがとうございます。
とにかく簡単にはできないことがわかりました。

お礼日時:2006/04/20 13:36

 マイクロソフト系のOSはワイルドカード展開をアプリケーション側で行うからです。



 Perl に対して "*" というファイル名がそのまま渡ってしまうため、それをオープンできずにエラーになってしまうのです。
 Unix 系のOSは、ほとんどのケースではシェル側で展開するんですよね。たしか。
    • good
    • 0
この回答へのお礼

ありがとうございます。
何か対処方法はないでしょうか?

お礼日時:2006/04/20 11:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!