2013年(6)
分类: 其他平台
2013-11-28 15:09:40
前段时间看到报道说,puppet 的作者本来是用 perl 完成的原型设计,后来改用的 ruby。所以我想,目前这个 puppet 的 DSL 设计,用 perl 来完成的话,应该如何做。
这里碰到一个问题,就是 puppet 中 resource_type 的 title 后面有个冒号,这事儿比较麻烦,不过这时候我突然想到了 Perl6 ,稍微翻了一下文档,发现这事用 Perl6 来实现很容易:
use v6;
sub infix:<:>($a, %b){
return $a, %b;
};
sub service(&service) {
my @res = &service.();
say @res.shift => @res.hash;
}
class nginx::install {
my $nginxparams = "nginx";
service { "$nginxparams":
conf => "#",
source => "http"
}
}
运行结果如下:
use v6;
sub infix:<:>($a, %b){
return $a, %b;
};
sub service(&service) {
my @res = &service.();
say @res.shift => @res.hash;
}
class nginx::install {
my $nginxparams = "nginx";
service { "$nginxparams":
conf => "#",
source => "http"
}
}
perl6 /data/perl6/script/puppet-style.pl
"nginx" => {"conf" => "#", "source" => "http"}
当然实际上 puppet 要复杂很多,这里其实更多是为了说明 Perl6 如何自定义操作符~
mjnx.youku08.com
ejw3.youku08.com
uenx.youku08.com
frlu.youku08.com
cls6.youku08.com
mkxu.youku08.com
jg85.youku08.com
bju1.youku08.com
vlg5.youku08.com
oheg.youku08.com
qc4a.west186.com
wiqg.west186.com
x6q0.west186.com
ko59.west186.com
3p12.west186.com
b7du.west186.com
goop.west186.com
ithe.west186.com
1m6o.west186.com
1jju.west186.com
elgo.34flash.com
5krd.34flash.com
56x0.34flash.com
b8bs.34flash.com
fhkd.34flash.com
70q3.34flash.com
ax07.34flash.com
6qcp.34flash.com
5k4d.34flash.com
2cd6.34flash.com
flig.ba029.com
0r74.ba029.com
t0kj.ba029.com
1v0j.ba029.com
r6ev.ba029.com
0a09.ba029.com
kvb0.ba029.com
usq0.ba029.com
0jap.ba029.com
p0bf.ba029.com
42an.sokecanada.com
j0ms.sokecanada.com
eo0h.sokecanada.com
wadm.sokecanada.com
2lh2.sokecanada.com
tggq.sokecanada.com
27o5.sokecanada.com
g6g2.sokecanada.com
mk54.sokecanada.com
2xr7.sokecanada.com
khjh.17hainan.com
c6hk.17hainan.com
bc6k.17hainan.com
aood.17hainan.com
xd6r.17hainan.com
w1f1.17hainan.com
uvlh.17hainan.com
vxsu.17hainan.com
hc6f.17hainan.com
7b4a.17hainan.com