设为首页 收藏本站
查看: 1101|回复: 0

[经验分享] perl脚本语言学习

[复制链接]

尚未签到

发表于 2015-12-27 12:50:00 | 显示全部楼层 |阅读模式
  来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的。到现在为止已经入职两个月,用perl脚本做了这些活:
  1. 修改了公司的一个爬取网页源代码的脚本
  2. 改进了一个出特征库的脚本,根据svn status的状态,来优化,将只需要添加的DB的数据进行处理。
  3. 编写了一个脚本,用于比对两个文件夹的文件(文件数量大约在+),之后选择需要处理的文件。用perl强大的正则匹配获取对应的字段,并将数据全部放入到excel当中。其中有部分字段需要进行英中文对应,此时创建了两个文件夹进行存放对应的中英文字段,让脚本读取两个文件来进行正确匹配,这样易于后期的维护。此外,由于文件夹的路径可能会发生更改,又用一个bash脚本来连接几个perl脚本,并将常用的参数直接写入到bash脚本中,这样亦可能对应单独使用perl,又可能在不更改参数的情况下,使用bash脚本快速执行脚本功能。后续会将代码贴上来做个分享。
  
  以下为刚开始看perl语言入门的一些基础小笔记,之后在改写脚本和自己编写脚本的时候也积累了一些东西,并没有记录进去,以后应该会做整理补充进去。因为这是最开始的记录,可能会显得非常基础的东西。
  
  # 为注释
  #! 则表示执行下面文件的程序
  反引号 `......` 表示运行外部程序
  下划线可以用来分割数据,并不会改变原数据
  如 98908008080 为了方便阅读,可以写成
  98_908_008_080
  perl 中的NULL没有特殊含义
  单引号字符串内,除了单引号或者反斜杠之外的字符都表示自身
  双引号字符串内,反斜杠可以用来表示控制字符
  用 . 能够连接字符串
  x可以表示字符串重复操作符
  perl -w my_program
  的 -w 参数可以在执行的时候看到警告
  -X 可以忽略所有警告
  在perl程序内加上
  use diagnostics; 将可以看到更详细得警告说明
  命令行加上 -M 参数能决定是否激活diagnostics
  $变量名
  {} 分隔符, 可以用于分隔字符串
  
  数字      0 为 false
  字符串 空串 为 false
  undef 为 false
  比较特殊的是, 字符串 '0' 也为false
  <STDIN> 可用于标准输入流
  如 $line=<STDIN>;
  chomp() 可以用来去掉换行符 (很常用)
  结合使用: chomp($line=<STDIN>) 读入且不包含换行符
  defined 函数可以用来判断是否为undef
  $define ($text)                  text为undef时返回false,否则返回true
  
  perl 数组没有长度限制,未赋值的数组元素值为undef
  $#array 表示array数组最后一个元素得索引
  array[-1] 表示最后一个数组元素
  @array 表示 all of the array 即可以对所有元素进行整体操作
  @array = (1 .. 5) 将1,2,3,4,5赋值给array 赋值是括号可以不加
  @array = qw (qwe wer ert rty); 将字符串"qwe", "wer", "ert", "rty"赋值给array
  qw可以允许使用任何标点符号作为分界符
  push/pop (数组从尾部压栈出栈), shift/unshift (从开头压栈出栈)
  foreach $rocks (@rocks) 可以遍历数组
  $_ 可以代表 foreach 循环中省略的控制变量
  1 foreach (1 .. 10) {
  2     print "I can count to $_!\n";
  3 }
  reverse 逆转, sort 排序
  @lines = <STDIN>;
  CTRL+D来表明输入结束 (UNIX) CTRL+Z (WINDOWS)
  @_ 是程序得私有变量
  使用my可以在子程序里创建私有变量
  程序开头加上 use strict; 将会使程序检查更加严谨
  
  $! 表示系统会提供一些有用的可读信息, 比如在打开文件失败得时候
  @array = split (//, $string); 函数可以将字符串拆分,//内表示按空格来拆分,/\./表示按小数点拆分。
  @ARGV 表示命令行的参数列表
  
  =~ 表示匹配绑定,成功返回true。$& 表示成功匹配的值 $` 表示匹配前 $' 表示匹配后
  =~ s/正则/替换内容/g 可以用这种方式将所有匹配的字段全部替换
  
  第一篇博客,就先这样,之后应该还会将工作中和学习中积累的点点滴滴都写进去,多总结,多积累。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156948-1-1.html 上篇帖子: 小时代5-perl chdir函数应用 下篇帖子: perl中显示XML结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表