UNIXのPerlでは引数は@ARGVに入ると思うのですが、

a.pl *.c

"*.c" という引数を入れるとファイルが展開されそのフォルダの中の "12-1.c" とか "12-2.c" とかいう引数が、配列に1つずつ入ってきました。
引数の文字列を何の修正もなしに(できればスペースも)受け取る方法はないですか?

A 回答 (3件)

a.pl "*.c"



といった具合に引数文字列を二重引用符で括ってみて下さい。
    • good
    • 0
この回答へのお礼

んんん、呼び出し側で制御しなければダメですか?
できれば、呼び出し側では正規表現を記述して、内部でそれに該当するファイルを操作したいと思っているのですが・・・。

お礼日時:2001/12/04 14:40

引数のワイルドカードの展開はスクリプトに渡る前に行われますので、スクリプト内部での制御は無理だと思います。


tujigeさんの仰るような方法があれば出来ると思いますが、それとて別な環境で実行された場合は無効になってしまいます。
ですので、スクリプト自身での制御は不可能、というのが私の意見です。
御参考までに。
    • good
    • 0
この回答へのお礼

わかりました。
使う側でダブルクォートで囲む方法にします。

お礼日時:2001/12/05 15:26

*.c とかは、shell が展開しちゃうので、お使いの shell の設定で展開しないようにしちゃえばいいのでは。



bash 2以上なら、braceexpand (スペル自信なし)というオプションがあったような。。。

今ざっと、bash のマニュアルを読んでみたら、展開するオプションはあったけど、展開しないオプションは見つからなかった。
多分あるのだろう。
    • good
    • 0
この回答へのお礼

使っているのはtcshで、管理者ではないので、ユーザー個別の設定でなんとかできれば良いのですが・・・。

お礼日時:2001/12/05 15:25

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


人気Q&Aランキング