上のエントリの絡みで、ワイルドカードの展開についてまとめときます*1。
shellは、ワイルドカードを展開してくれます。展開できる物は展開されて@ARGVに入り、展開されない物はそのまま渡ってきます。
$ perl -e 'print map {"$_\n"} @ARGV' * */* a.txt b.txt c.txt */*
シングルクォートで囲むと、展開しなくなります。
$ perl -e 'print map {"$_\n"} @ARGV' '*' '*/*' * */*
ちなみに上記はbashでの結果なのですが、zshだとこうなります。こっちの方が誤作動がない親切な動作ですね。
% perl -e 'print map {"$_\n"} @ARGV' * */*
zsh: no matches found: */*
この辺の振舞いって経験的にしか把握してないのですが、どっかにまとまってるんですかねえ??
*1:わかってなくてハマったので・・・orz