perl __DATA__ 使用記錄與配置讀取

來源:互聯網
上載者:User

標籤:os   使用   檔案   ar   2014   line   sp   new   on   

#!/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__ 使用記錄與配置讀取

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.