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. Spark之Streaming

    1. socket消息发送 import java.net.ServerSocket import java.io.PrintWriter import scala.collection.mutabl ...

  2. Javascript包含对象的数组去重

    Array.prototype.clearRepeat = function(){ var result = [], obj = {}; for(var i = 0; i < this.leng ...

  3. test dword ptr [eax],eax ; probe page. visual studio

    当在函数中申请占用空间很大的数组.结构体时,会产生该问题. 由于局部变量的申请空间存放于栈中,windows里默认栈内存是1M 所以当申请空间大于1M时就会出现溢出错误 通过debug就会进入以下文件 ...

  4. iOS开发——项目篇—高仿百思不得姐 05——发布界面、发表文字界面、重识 bounds、frame、scrollView

    加号界面(发布模块) 一.点击加号modal出发布模块,创建控件,布局控件1)使用xib加载view,如果在viewDidLoad创建控件并设置frame 那么self.view 的宽高 拿到的是xi ...

  5. leetcode 141. Linked List Cycle

    Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...

  6. 160809228_符瑞艺_C语言程序设计实验3 循环结构程序设计

      #include <stdio.h> int main(){ //使用for循环完成1+2+......+100 ; ;i<=;i++) sum +=i; //sum = sum ...

  7. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  8. 3-python学习——变量

    变量是我所接触过的编程语言中都具有的一个概念,只是这个概念有的强有的弱罢了. 1.什么是python的变量 变量这个东西怎么解释呢?不怎么好说. 这么说吧,变量就相当于一个代名词,或者说是名字. 计算 ...

  9. Extjs PROXY查询params无法传参,改用extraParams

  10. ubuntu安装skype

    1.添加源 sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner&quo ...