学习perl点滴(一)
2011-09-01 00:47
447 查看
这里记录俺在学perl过程中遇到的痛苦,快乐。
1》 今天看到别人博客用sed,awk 输出文件奇,偶数行,突然自己也想用perl尝试写,开始 直接$.%0 一直报错,理解错了%用法,今天写出这个也是自己学一句话的小小突破吧。
2011.09.1 0:46
2》 听群里朋友建议,返回看小骆驼,尝试做题,这样可以发现好多问题。今天看第4章,按照书上的例子,代码如下
原来是我理解错了,我以前理解的子函数返回值,返回就是输出,实际上它们相互没关系,上面输入81 ,因为 8 是if语句print的结果,而1在perl语言里 表示正确的意思,也正是sub的返回值,我把&max 的返回值付给了$c,然后输出,所以在最后 输入了81. 在这里 贴2段代码,一个是朋友写的,一个是师傅写的。
这段代码 用了三目操作符,warn
2011.09.15. 1:21
3》 继续讨论函数,今天上午写了2段代码,但是返回的结果 一个是空,一个数字,当时很奇怪,函数里return 可以省略不写,而且函数返回的总是代码块里最后的执行结果, 同意代码里是if语句,但是返回值相差甚远。直到下午朋友帮忙,又看的perl精简实例那书,才有新的认识。有时候想,不是自己愚钝,理解能力差,就是小骆驼内的代码有点误人子弟的,理解很很费劲。
大家看出什么不一样的地方了吗, 还是思考,多写 才行o(︶︿︶)o 唉 折腾一晚上
2011.9.16 0:56
5》比较运算
比较常犯的错误是 if ( $num = 5 ),这样直接成了给变量num赋值了,正确写法为if ( $num == 5 )
2012.10.29
6》复制一个文件到另外一个文件中
同时open 打开2个文件,文件句柄一个是IN_FILE,另外一个OUT_FILE,这样通过print OUT_FILE $IIN_FILE; 复制文件。
1》 今天看到别人博客用sed,awk 输出文件奇,偶数行,突然自己也想用perl尝试写,开始 直接$.%0 一直报错,理解错了%用法,今天写出这个也是自己学一句话的小小突破吧。
perl -wnl -e '$. % 2==0 and print;' grep_test 显示文件偶数行内容 perl -wnl -e '$. % 2==1 and print;' grep_test 显示文件奇数行内容
2011.09.1 0:46
2》 听群里朋友建议,返回看小骆驼,尝试做题,这样可以发现好多问题。今天看第4章,按照书上的例子,代码如下
[root@localhost ~]# perl test_sub.pl 81 [root@localhost ~]# cat -n test_sub.pl 1 #!/usr/bin/perl 2 #Date:2011.09.14 3 #Author:luyafei 4 #Email:chulianwang@qq.com 5 use strict; 6 my $value = &max(6, 8); 7 sub max { 8 my ($m, $n) = @_; 9 if ($m > $n) {print $m } else { print $n} 10 } 11 my $c = &max; 12 print "$c\n";
原来是我理解错了,我以前理解的子函数返回值,返回就是输出,实际上它们相互没关系,上面输入81 ,因为 8 是if语句print的结果,而1在perl语言里 表示正确的意思,也正是sub的返回值,我把&max 的返回值付给了$c,然后输出,所以在最后 输入了81. 在这里 贴2段代码,一个是朋友写的,一个是师傅写的。
use strict; use warnings; my $value = &max(6, 8); sub max { my ($m,$n) = @_; return $m>$n ? $m : $n; } warn $value;
这段代码 用了三目操作符,warn
#!/usr/bin/perl use strict; use warnings; use 5.10.0; &max(6,8); sub max { my ($m, $n) = @_; if ($m > $n) { say $m; } say $n; }
这段代码 用了新特性say 效果和print一样,只是默认添加了换行符(\n),使用say 要加use 5.10.0
2011.09.15. 1:21
3》 继续讨论函数,今天上午写了2段代码,但是返回的结果 一个是空,一个数字,当时很奇怪,函数里return 可以省略不写,而且函数返回的总是代码块里最后的执行结果, 同意代码里是if语句,但是返回值相差甚远。直到下午朋友帮忙,又看的perl精简实例那书,才有新的认识。有时候想,不是自己愚钝,理解能力差,就是小骆驼内的代码有点误人子弟的,理解很很费劲。
[root@localhost ~]# perl test_sub.pl [root@localhost ~]# cat test_sub.pl #!/usr/bin/perl #Date:2011.09.14 #Author:luyafei #Email:chulianwang@qq.com use strict; my $value = &max(6, 8); sub max { my ($m, $n) = @_; if ($m > $n) { $m; } else { $n; } } my @c = &max; print "@c\n"; [root@localhost ~]# perl scalar.pl 6[root@localhost ~]# cat scalar.pl #!/usr/bin/perl use strict; use warnings; my $free = 6; my $max = 9; sub list_from_free_to_max { if ($free < $max) { $free; }else { $max; } } my @c = &list_from_free_to_max; print @c;
上面2段代码 分别返回空和数字6 ,问朋友,被他发群里了,招来一群人喷,o(∩_∩)o 哈哈 不过都是熟悉人。 我只说下,正确的理解,至于我那错误想法,我就不说了,怕会引起误会。 如果要给函数传参, 方式是&函数明(),括号里的列表元素 用逗号隔开,例如my @arry = &max(6,80); 这就是传参数6,80给函数max, 然后把返回值赋值给@arry. 我第一段代码 ,@c 是空,就是因为没给函数传参,给$value 传参了,如果把最后print 该成$value,就会输出8了。 2011.9.15 17:58 4》 晚上还在纠结第四章,持久性变量 这节, 看不懂写的什么思路 很乱,最后写2个代码 ,才明白书上说的什么,具体我不解释了,看下面2段代码 就明白意思了。
[root@localhost ~]# cat 7.pl #!/usr/bin/perl sub marine { $n +=1; print "Hello,sailor number $n\n"; } &marine; [root@localhost ~]# perl 7.pl Hello,sailor number 1
[root@localhost ~]# cat 7.pl #!/usr/bin/perl use strict; sub marine { $n +=1; print "Hello,sailor number $n\n"; } &marine; [root@localhost ~]# perl 7.pl Global symbol "$n" requires explicit package name at 7.pl line 4. Global symbol "$n" requires explicit package name at 7.pl line 5. Execution of 7.pl aborted due to compilation errors. [root@localhost ~]#
大家看出什么不一样的地方了吗, 还是思考,多写 才行o(︶︿︶)o 唉 折腾一晚上
2011.9.16 0:56
5》比较运算
比较常犯的错误是 if ( $num = 5 ),这样直接成了给变量num赋值了,正确写法为if ( $num == 5 )
2012.10.29
6》复制一个文件到另外一个文件中
同时open 打开2个文件,文件句柄一个是IN_FILE,另外一个OUT_FILE,这样通过print OUT_FILE $IIN_FILE; 复制文件。
相关文章推荐
- 学习perl点滴(二)
- Perl 学习
- Perl中的模式匹配学习笔记
- three.js学习点滴(1) — 创建场景
- Mysql学习点滴
- [BOOST]学习使用点滴-1-字符处理[by galphy]
- 修改ulimit值的学习点滴:
- [BOOST]学习使用点滴-3-Smart_ptr库[by galphy]
- Perl中的控制结构学习笔记
- .NET学习心得点滴
- perl学习总结之引用
- Learning Perl(Perl语言入门)学习笔记(9)
- 学习点滴 cxf hibernate validator
- 记录学习的点滴(Spring设计模式)
- perl学习笔记-----------------------(7)
- PERL 学习书库
- Perl学习
- Perl 学习笔记 --- 08
- 入门篇-学习点滴之最简单的Linux关机命令程序
- Perl 学习记录1 Perl的基本构件:数字和字符串