cpan提供了一些好用的module, XML::Simple基本上灌完ActivePerl就有內建. 此Module的作者首頁
下面大量翻譯網頁裡的東西, 有興趣可以看看原文.
XML::Simple是一個Perl Module, 主要為了提供一個容易讀寫XML文件的界面. 本來作者是想做一個讀寫XML格式的config檔案. 不過很多人拿去做其他用途(kerker.
Installation:
上面提到很多安裝的方法, 包括用cpan提供的shell啊, 安裝檔啊..不過作者說只要把Simple.pm解壓縮出來放到perl/lib/XML/底下就可以了:)
用法: (原文)
主要使用的function: XMLin; XMLout
一般 format:
use XML::Simple;
my $ref = XMLin([
my $xml = XMLout($hashref [,
用物件導向讓你看不懂的話:
require XML::Simple;
my $xs = XML::Simple->new(options);
my $ref = $xs->XMLin([
my $xml = $xs->XMLout($hashref [,
如果要得到error message, 只要作一些修改
use XML::Simple qw(:strict);
一個簡單的範例:
file name :foo.xml
XML包法:
裡面項目可大量.
perl 程式裡:
use XML::Simple;
my $config = XMLin();
這會產生一個名叫$config的hashref, 因為他沒有設定初值, $config會預設對應到該Script的name跟location.
接下來要將資料吃進來, 使用Data::Dumper把資料弄進去:
use Data::Dumper;
print Dumper($config);
印出來會有如下效果:
{
'logdir' => '/var/log/foo/',
'debugfile' => '/tmp/foo.debug',
'server' => {
'sahara' => {
'osversion' => '2.6',
'osname' => 'solaris',
'address' => [ '10.0.0.101', '10.0.1.101' ]
},
'gobi' => {
'osversion' => '6.5',
'osname' => 'irix',
'address' => '10.0.0.102'
},
'kalahari' => {
'osversion' => '2.0.34',
'osname' => 'linux',
'address' => [ '10.0.0.103', '10.0.1.103' ]
}
}
}
這是hashref裡面包的內容, 記得他是一個物件.
那要怎麼拿裡面的元素呢? 假設我要拿log directory的name
print $config->{logdir};
如果要拿特定的元素, 例如 kalahari Server的第二個Address
print $config->{server}->{kalahari}->{address}->[1];
但程式不會只寫的這麼簡單. 下回待續?
沒有留言:
發佈留言