当前位置:  开发笔记 > 编程语言 > 正文

perl6'做(文件)'等价

如何解决《perl6'做(文件)'等价》经验,为你挑选了0个好方法。

在perl5中,我曾经用'do(file)'来配置这样的配置文件:

---script.pl start ---
our @conf = ();
do '/path/some_conf_file';
...
foreach $item (@conf) {
    $item->{rules} ...
...
---script.pl end ---

---/path/some_conf_file start ---
# arbitrary code to 'fill' @conf
@conf = (
{name => 'gateway',
    rules => [
        {verdict => 'allow', srcnet => 'gw', dstnet => 'lan2'}
    ]
},

{name => 'lan <-> lan2',
    rules => [
        {srcnet => 'lan', dstnet => 'lan2',
         verdict => 'allow', dstip => '192.168.5.0/24'}
    ]
},
);
---/path/some_conf_file end ---

Larry Wall的"Programming Perl"也提到了这种方法:

但是FILE对读取程序配置文件等内容仍然有用.手动错误检查可以这样做:

# read in config files: system first, then user 
for $file ("/usr/share/proggie/defaults.rc",
                "$ENV{HOME}/.someprogrc") {
         unless ($return = do $file) {
             warn "couldn't parse $file: $@" if $@;
             warn "couldn't do $file: $!"    unless defined $return;
             warn "couldn't run $file"       unless $return;
         } }

好处:

每次都不需要编写自己的解析器 - perl解析并为您创建数据结构;

更快/更简单:本机perl数据结构/类型,没有从外部格式转换的开销(如YAML);

与模块作为conf文件相比,不需要操纵@INC从某处加载模块;

与作为conf文件的模块相比,额外的代码更少;

"配置文件"的"语法"与perl本身一样强大;

"临时"格式;

缺点:

没有隔离:我们可以从"配置文件"执行/销毁任何东西;

如何使用perl6获得相同的效果?
有没有办法在perl6中做得更好(没有缺点)并且没有解析自己的语法,语法,模块包括?
像"从文件中的文本表示加载哈希值或数组"之类的东西?

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有