Perl钻石运营商内部奇怪的事情

时间:2011-10-24 17:51:22

标签: perl diamond-operator

拜托,任何人都可以帮助我:

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

我只是不明白它是如何工作的。它的工作原理!制造

a1a2a3b1b2b3c1c2c3
输出

有谁知道钻石运营商内部发生了什么?

1 个答案:

答案 0 :(得分:7)

这是表示glob bing的另一种方式。基本上,curlies告诉glob操作符将每个逗号分隔的元素放在内部并组合所有可能性。

更明确的方法是将逗号分隔各个输出:

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

来自perldoc -f glob

  

如果非空大括号是glob中使用的唯一通配符,   没有匹配的文件名,但可能会返回许多字符串。   例如,这会生成九个字符串,每个配对一个   水果和颜色:

@many =  glob "{apple,tomato,cherry}={green,yellow,red}";