Perl对YAML的支持很好,著名的Plagger就是用YAML作为配置文件的。

在Perl中读取YAML文件也很简单。常用的模块就是YAML,这是个纯Perl的实现,速度慢,但可以跨平台运行。 如果追求运行速度而不在乎平台问题,可以使用YAML::Syck和YAML::XS,两者都是C语言的实现。 YAML::Syck的C语言部分基于libsyck,而YAML::XS的C语言部分基于libyaml。 两者相比,YAML::XS稍稍快一点,而且它精确地实现了YAML标准1.1版的内容。

用下面的john.yaml作为例子(从IBM网站copy过来的):

name: John Smith
age: 37
spouse:
  name: Jane Smith
  age: 25
children:
  - name: Jimmy Smith
    age: 15
  - name: Jenny Smith
    age: 12

用YAML::Syck需要先安装YAML-Syck包,然后:

#!/usr/bin/perl

use YAML::Syck;
use Data::Dumper;

$yaml = LoadFile("john.yaml");

print Dumper($yaml);

输出结果:

$VAR1 = {
          'spouse' => {
                        'name' => 'Jane Smith',
                        'age' => '25'
                      },
          'name' => 'John Smith',
          'children' => [
                          {
                            'name' => 'Jimmy Smith',
                            'age' => '15'
                          },
                          {
                            'name' => 'Jenny Smith',
                            'age' => '12'
                          }
                        ],
          'age' => '37'
        };

用YAML::XS需要先安装YAML-LibYAML包,然后

#!/usr/bin/perl

use YAML::XS;
use Data::Dumper;

open FH, "john.yaml";
$yaml_content = do { local $/; <FH>; };
close FH;
$yaml = Load($yaml_content);

print Dumper($yaml);