5

お願いします、誰でもこれで私を助けることができます:

perl -e 'print for <{a,b,c}{1,2,3}>'

私はそれがどのように機能するのか理解していません。そしてそれはうまくいきます!生産

a1a2a3b1b2b3c1c2c3

出力時。

ダイヤモンドオペレーターの内部で何が起こっているか知っている人はいますか?

4

1 に答える 1

7

globbingを表す別の方法です。基本的に、カーリーはglobオペレーターに、コンマで区切られた各要素を内部に取り、すべての可能性を組み合わせるように指示します。

これをより明確に確認する方法は、個々の出力をコンマで区切ることです。

$ perl -e 'print join ",", <{a,b,c}{1,2,3}>;'
a1,a2,a3,b1,b2,b3,c1,c2,c3

からperldoc -f glob:

グロブで使用されるワイルドカード文字が空でないブレースのみの場合、一致するファイル名はありませんが、多くの文字列が返される可能性があります。たとえば、次の例では、果物と色の組み合わせごとに 1 つずつ、合計 9 つの文字列が生成されます。

@many =  glob "{apple,tomato,cherry}={green,yellow,red}";
于 2011-10-24T17:59:20.423 に答える