YAML简介

YAML-what?

YAML Ain't Markup Language

和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。

YAML不是XML。

YANM-use?

实现简单,解析成本很低,YAML特别适合在脚本语言中使用。列一下现有的语言实现:Ruby、Java、Perl、Python、php、OCaml、JavaScript。除Java,其他都是脚本语言

  • YAML比较适合做序列化。因为它是宿主语言数据类型直转的
  • YAML做配置文件也不错。比如Ruby on Rails的配置就选用YAML。

    我现在学习的原因是因为公司需求,使用perl语言去调用YAML会更简洁、方便

YAML-advan

  • YAML的可读性好
  • YAML和脚本语言的交互性好
  • YAML使用实现语言的数据类型
  • YAML有一个一致的信息模型
  • YAML易于实现

YAML-short

YAML和XML不同,没有自己的数据类型的定义,而是使用实现语言的数据类型。但是如果YAML兼容性不好,在不同的语言之间流转会出现问题。假如兼容性没有问题,YAML:轻巧、高效、简便、通用。

YAML-picture

YAML-example

---

site:
name:sina
url:http://www.sina.com.cn --- site:
name:google
url:http://www.google.com --- site:{name:sina,url:http://www.sina.com.cn} --- site:{name:google,url:http://www/google.com} #Sequence
#(-)
-agile
-age
-bag #([...])
[agile,age,bag] #sequence的sequence
-[agile,age]
-[bag,boy]
-[cab.cow] #mapping中的sequence
-{name1:http://www.name1.com.cn,name2:http://www.name2.com.cn}
-{name3:http://www.name3.com.cn,name4:http://www.name4.com.cn} #单一key/value
name:calvin #复杂key的key/value
#key为sequence时在key前面加? ?[china.japan,malay]:Asian Country #复杂value的key/value对 #value为sequence
AsianCountries:[china,japan,malay]

YAML-Perl

使用Cpan在perl中安装YAML模块

1.安装Cpan

perl -MCPAN -e shell
cpan> o conf commit
cpan>help #获得帮助
cpan>m #列出CPAN上所有模块的列表
cpan>install YAML #安装模块,自动完成YAML模块从下载到安装的全过程。
cpan>quit #退出

备注:在以后安装其他模块的时候,也使用cpan,方便简单

EXAMPLE

国际象棋俱乐部数据的YAML描述

$vim club.yml
---
players:
name1:&id1
rating:2700
status:GM
name2:&id2
rating:2700
status:Computer
name3:&id3
rating:1400
status:Amateur
matches:
-
date:2002-10-04
white:*name2
black:*name1
result:draw
-
date:2002-10-06
white:*name1
black:name2
result:white
---
$ cat test
#!/home/s/ops/perl/bin/perl

use YAML;
my $club = YAML::LoadFile('club.yml');
my $club_yamlstr = YAML::Dump($club);

参考博文:

http://www.cnblogs.com/chwkai/archive/2009/03/01/249924.html

http://www.cnblogs.com/dbasys/archive/2007/06/11/2127620.html

http://www.ibm.com/developerworks/cn/xml/x-matters/part23/

YAML-初识的更多相关文章

  1. Go实战--也许最快的Go语言Web框架kataras/iris初识(basic认证、Markdown、YAML、Json)

    ris自称是Go语言中所有Web框架最快的,它的特点如下: 1.聚焦高性能 2.健壮的静态路由支持和通配符子域名支持. 3.视图系统支持超过5以上模板 4.支持定制事件的高可扩展性Websocket ...

  2. Ansible_自动化运维《Ansible之初识-1》

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  3. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  4. 联盟链初识以及Fabric环境搭建流程

    这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程. 区块链分类: 以参与方式分类,区块链可以分为:公有链.联盟链和私有链. 定义: 我们知道区块链就是一个分布式的,去中 ...

  5. ansible学习-playbook的YAML语法

    [一篇非常好的ansible参考博文] 初识Ansible http://liumissyou.blog.51cto.com/4828343/1616462 --------------------- ...

  6. Playbook剧本初识

    目录 1.Playbook剧本初识 2.Playbook变量使用 3.Playbook变量注册 4.Playbook条件语句 5.Playbook循环语句 6.Playbook异常处理 7.Playb ...

  7. 1.初识Redis

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-08-14 20:35:36 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  8. C#与yaml解析

    YAML 官方网站称 YAML 是"一种所有编程语言可用的友好的数据序列化标准".YAML Ain't Markup Language,和GNU一样,YAML是一个递归着说&quo ...

  9. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  10. SpringBoot中yaml配置对象

    转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...

随机推荐

  1. 微信封号浪潮再起 A货假代购还能在朋友圈泛滥多久?

    你的微信朋友圈是不是很活跃?是不是被很多所谓的名品所包围?没错,这些很多都是A货或假代购的伎俩.如果xmyanke的微信朋友圈出现这些东东,我就会直接屏蔽他的朋友圈权限.具体方法是:打开他的微信详细资 ...

  2. Hadoop 面试题之Hbase

    Hadoop 面试题之九 16.Hbase 的rowkey 怎么创建比较好?列族怎么创建比较好? 答: 19.Hbase 内部是什么机制? 答: 73.hbase 写数据的原理是什么? 答: 75.h ...

  3. CentOS编译安装Apache 2.4.x时报错:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

    先前按照这篇文章“CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.22”去编译安装Apache2.2.x版本时,安装得挺顺利,今天换成Apache2.4.x版本,安装方法一样, ...

  4. Mysql InnoDB行锁实现方式

    Mysql InnoDB行锁实现方式 InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的.InnoDB这种行锁实现特点 ...

  5. css3延时动画

    不太理解属性都是什么意思,但是有动画效果,我也是惊呆了 <style> #animated_div{animation:animated_div 4s 1; -moz-animation: ...

  6. HDU 3743 Frosh Week(归并排序求逆序对)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 题目意思就是给你一个长为n的序列,让你求逆序对.我用的是归并排序来求的.归并排序有一个合并的过程 ...

  7. 剑指Offer 反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素.     思路: 法1:用栈,压栈出栈 法2:头插法(有递归非递归2中)   AC代码: /* struct ListNode { int va ...

  8. 好无语的问题----include 后面需要空格么?

    前俩天回学校办事,在去师弟宿舍的时候,被问到了一个很 "深奥"得问题 ---------include  后面需要空格么? 在我以前的印象中不管在哪个编译器中,,都是需要有空格的, ...

  9. eclipse中整合springMvc和velocity

    1.项目所需要的jar包(有些可能多余) 2.在src目录下创建一个bean  一个一个controller ,路径如下 person代码: package com.test.bean; import ...

  10. getopt函数的使用——分析命令行参数

    getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...