perl里想并行执行多个函数_IC入职新同学必备技能手册#6 - Perl (4) - 一次实战

写在前面

这是Perl的终结篇。原本是想从工作环境中拿出一个perl脚本,line by line地做注释。但是挑来挑去,并没有找到一个好的example code。

不如这样

根据perl在我日常工作中的使用情况,人为地编造一个实战文本处理题,然后对应写出一个perl脚本,comment line by line。

首先,YAML格式

  • 这是一个nv内部特常用的“数据存储”格式。百度百科的解释是:
YAML(/ˈjæməl/,尾音类似 camel骆驼)是一个可读性高,用来表达数据序列化的格式。
  • 不太清楚其他公司的使用情况,它有点类似xml的思路(树状层级结构),可读性比xml强一些,各有所长吧。
  • 常见的YAML格式如下:
partitioning:  # 可以在任意行使用注释
    GPA_F0:
      bbox:  
      - bbox_gpa_f0     #这是一个数组元素#1
      - NV_GPA_F0_bbox  # 数组元素#2
      chip_partition: gpaf0lts0,gpaf0lts1,gpaf0lts2,gpaf0lts3
      clkstartpoint_name_mapping: ''
    

然后,我们要拿YAML做什么

  • 任何YAML数据,都可以在Perl中被转化为hash数据结构,比如上面的example,可以变成如下的hash数据 (抱歉,下面代码手机观看不太友好):
$hash = {
  'partitioning' => {
    'GPA_F0' => {
            'bbox' => ['bbox_gpa_f0' , 'NV_GPA_F0_bbox'],
            'chip_partition' => 'gpaf0lts0,gpaf0lts1,gpaf0lts2,gpaf0lts3',
            'clkstartpoint_name_mapping' => ''
                }
    } 
};

怎么从 YAML 转到 Hash 数据结构

  • 实际代码中,可以使用CPAN的YAML函数库,即可完成这种转换(双向)。
    • Example:
$hash = YAML::LoadFile ('input_file_name.yml');  # 读入
YAML::DumpFile ($hash , 'output_file_name.yml') # 写出
  • 但是!我们这次,要用Perl code来实现它!

鉴于我coding能力的上限不高,我要增加一些限制

  • 缩进:
    • level#1 = 0 space (白空格)
    • level#2 = 3 space
    • level#3 = 5 space (以此类推)
    • 实际YAML的规范中,对同一level的缩进值无要求,只需要全局都一样即可。
  • 有限的error handler
  • 完成Load和Dump的功能

代码我会在06/15结束前贴在本文末尾

  • 抱歉,临近milestone业余时间不多
  • 百度网盘的形式下载,做出line by line的全注释。
  • 我尽可能地cover所有perl常见代码套路。那么,这份代码即可变成各位同学未来的“词典代码”(随用随copy)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值