所以这是我想解析的配置文件中的一个片段(它是一个LVM2配置):
VolGroup00 {
id = "vyllep-rfI6-LCvO-h6mN-zYZu-hiAN-QShmG6"
seqno = 3
status = ["RESIZEABLE", "READ", "WRITE"]
flags = []
extent_size = 65536 # 32 Megabytes
max_lv = 0
max_pv = 0
metadata_copies = 0
physical_volumes {
pv0 {
id = "1yLiSl-x0fp-ZkyU-HMQl-eTVt-xiId-cFnih0"
device = "/dev/xvda2" # Hint only
status = ["ALLOCATABLE"]
flags = []
dev_size = 31246425 # 14.8995 Gigabytes
pe_start = 384
pe_count = 476 # 14.875 Gigabytes
}
}
}
我想将其解析为 Perl 数据结构。此配置采用什么格式?我的猜测是它看起来像一个python数据结构。
任何想法格式,或者更好的是,一个现有的模块来解析它?
该配置使用专门用于 LVM 的自定义配置语言。 lvm 用户空间工具包含用于解析此语言的代码。
你可以获取lvm2的用户空间代码并尝试复制它的解析器,也许使用Parse::RecDescent。
或者,CPAN 中的 Perl Linux::LVM 模块提供了提取所需信息的功能。