首页 > 其他 > 详细

perl __DATA__ 使用记录与配置读取

时间:2014-08-26 11:09:35      阅读:431      评论:0      收藏:0      [点我收藏+]

#!/usr/bin/perl
# file : DATA.pl
# author : darkstar
# date  : 2014/08/26

use strict;
use warnings;
use diagnostics;

use Data::Dumper;

my %config;

while (<DATA>)
{
    next if /^\s*#/;
    next unless /\s*(\w+)\s*=\s*(\w+)\s*/;
    
    my ($key, $value) = ($1, $2);
    
    if (exists $config{$key}) {
        if ( ! ref $config{$key}) {
        $config{$key} = [ $config{$key} ];
    }

    push @{ $config{$key} }, $value;
    }
    else {
        $config{$key} = $value;
    }
}
print Dumper(%config);
__DATA__
#comment
#line
database = mysql
username = hwy
pass    =       as
   hostname = localhost
use = a1
use = a2
use = a3

 

这里只读了一次DATA 如果想在一个脚本多次读DATA 可以

seek DATA, 0 , 0; 就可以了

-----------------------在上面脚本__DATA__ 前加

seek DATA, 0, 0;
while (<DATA>) {
    chomp;
    print;
}

就能看到 效果,如果注释 seek DATA, 0, 0 就能对比出不同之处。

 

一般我们把配置单独放在一个文件中,可以使用专门的模块来读取解释, 举个例子: Dacner 默认生成的app config 读取, 因为这个文件格式是YAML,使用Config::YAML 模块来解决它

#!/usr/bin/perl
#
use 5.10.0;
use strict;
use warnings;

use Data::Dumper;
#use Config::Tiny;    # read .ini config
use Config::YAML;
my $c = Config::YAML->new( config => "/home/hwy/myapp/config.yml",
                           output => "/tmp/cc.cfg",
                         );

say $c->{appname};   #传统读取配置方法
say $c->{charset};
$c->{charset} = ‘GB2312‘;  #重新设置配置文件的编码
say $c->get_appname;    #OOP的属性读取方法
say $c->get_charset;
$c->write; 

然后查看/tmp/cc.cfg 可以看到新生成的配置文件

 

perl __DATA__ 使用记录与配置读取

原文:http://www.cnblogs.com/huangv1/p/3936539.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!