perl编程总结
2015-12-28 20:30
246 查看
perl语言在文本字符串处理方面无比的强大,最近半年时间里perl写的几个工具的确方便了不少工作。文本自动化处理上perl是不二的选择。但是对perl编程,曾经也有很多迷惑不解,这里一并总结备忘一下perl编程的感受。
1、perl正则表达式上其他语言是无法匹敌的。
2、perl很少需要你去关注内存,这点与习惯于每个内存字节都需要自己保证的C编程很大不一样。可能开始时这点很让人不解。perl会自己管理内存,你无法主动申请和释放(不包括文件、socket等一些资源,主要指数据结构)。即是你把一个局部变量的引用赋值给全局,出了这个局部变量的作用域,你还是可以当做全局的一样用,这点这C中是不可想象的。
perl吐槽:
1、感觉脚本语言在表达数据结构方面,功能上也能做到像C语言一样定义各种你想要的数据类型(结构体->哈希数组、枚举->常量),但是不够直观,阅读代码也是很头疼的。perl数据类型不需要提前定义,直接使用就已经定义好了。这样perl脚本写个小程序也许很方便,一旦程序规模和复杂度上去了,看到一个变量,你是无法一眼看出他整体的数据类型。这样编写和阅读代码是很不利的。
解决:1)对复杂数据结构,要给出尽可能详细的注释。同时对函数、变量、关键分支、关键处理,要给出详细的注释,最好给个简短的实例。良好的注释风格在脚本编程上尤其重要,不然一个月后对自己写的脚本代码也无法看懂。
如循环解析参数的数据结构--哈希数组:
@param : %param_hash -> $name #参数名称
-> $type #参数类型
-> $subflag #是否有子结构体(0/1)
-> @subtype : %param_hash ...#子结构体
2)对数据结构的定义、用途一定要清晰,当然编写中经常修改自己定义好的数据结构,所以详尽的注释是必须的。同时,可以利用 print Dumper(%hash/@arr)."\n"; (包含use Data::Dumper;)适时打印复杂数据类型变量的取值。
3)阅读和编写perl代码工具,可以选择Source Insight、UE、Notepad++,对阅读编程代码还是很不错的。当然,SI对perl的变量高亮(shift+F8)还不尽如人意;复杂数据结构也无法跳转。
4)对复杂的数据结构,引用时不要像C语言一样随意写的很长、嵌套的很深。用数据结构的引用或用一个临时变量来接收,会使代码看起来简洁得多。如,对hash数组操作:
作为输出:my %hash =();......push @{$p_arr_params},\%hash; #注意要保证每一个%hash数组元素是重新得到的hash。
作为输入:my %hash = %{$p_arr_params[$i]};......
1、perl正则表达式上其他语言是无法匹敌的。
2、perl很少需要你去关注内存,这点与习惯于每个内存字节都需要自己保证的C编程很大不一样。可能开始时这点很让人不解。perl会自己管理内存,你无法主动申请和释放(不包括文件、socket等一些资源,主要指数据结构)。即是你把一个局部变量的引用赋值给全局,出了这个局部变量的作用域,你还是可以当做全局的一样用,这点这C中是不可想象的。
perl吐槽:
1、感觉脚本语言在表达数据结构方面,功能上也能做到像C语言一样定义各种你想要的数据类型(结构体->哈希数组、枚举->常量),但是不够直观,阅读代码也是很头疼的。perl数据类型不需要提前定义,直接使用就已经定义好了。这样perl脚本写个小程序也许很方便,一旦程序规模和复杂度上去了,看到一个变量,你是无法一眼看出他整体的数据类型。这样编写和阅读代码是很不利的。
解决:1)对复杂数据结构,要给出尽可能详细的注释。同时对函数、变量、关键分支、关键处理,要给出详细的注释,最好给个简短的实例。良好的注释风格在脚本编程上尤其重要,不然一个月后对自己写的脚本代码也无法看懂。
如循环解析参数的数据结构--哈希数组:
@param : %param_hash -> $name #参数名称
-> $type #参数类型
-> $subflag #是否有子结构体(0/1)
-> @subtype : %param_hash ...#子结构体
2)对数据结构的定义、用途一定要清晰,当然编写中经常修改自己定义好的数据结构,所以详尽的注释是必须的。同时,可以利用 print Dumper(%hash/@arr)."\n"; (包含use Data::Dumper;)适时打印复杂数据类型变量的取值。
3)阅读和编写perl代码工具,可以选择Source Insight、UE、Notepad++,对阅读编程代码还是很不错的。当然,SI对perl的变量高亮(shift+F8)还不尽如人意;复杂数据结构也无法跳转。
4)对复杂的数据结构,引用时不要像C语言一样随意写的很长、嵌套的很深。用数据结构的引用或用一个临时变量来接收,会使代码看起来简洁得多。如,对hash数组操作:
作为输出:my %hash =();......push @{$p_arr_params},\%hash; #注意要保证每一个%hash数组元素是重新得到的hash。
作为输入:my %hash = %{$p_arr_params[$i]};......
相关文章推荐
- Shell 脚本编程陷阱
- VBS脚本写的Windows硬件检测工具分享
- Perl模块编写说明
- perl如何避免脚本在windows中闪一下就关闭
- Perl中的特殊内置变量详细介绍
- 用vbscript实现隐藏任务栏图标的脚本
- 用autoit编写第一个脚本(Hello World)
- VBS调用WMI快速关闭IE的脚本
- Oracle数据库执行脚本常用命令小结
- 收集的ROS防火墙脚本
- JSP脚本漏洞面面观
- 不错的批处理脚本 第一部分
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- 不错的批处理脚本实例代码 第二部分
- linux下使用perl获取本机ip的几种方法介绍
- 使用脚本和批处理清除电脑中的痕迹的代码第1/2页
- 让你的脚本说话
- Lua脚本获取喜马拉雅MP3音频地址
- perl 控制结构 条件控制 if while