加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl自学笔记整理

发布时间:2020-12-15 23:43:14 所属栏目:大数据 来源:网络整理
导读:输入与输出 1、读取标准输入(键盘输入的形式都称标准输入) $line = ;????????????? ? #读取下一行chomp($line);????????????????? ? #截掉最后的换行符chomp($line =);? ? #习惯用法,效果同上如果读到文件结尾(end-of-file),"行输入"操作符就会返回undef

输入与输出

1、读取标准输入(键盘输入的形式都称标准输入)
$line =
;????????????? ? #读取下一行chomp($line);????????????????? ? #截掉最后的换行符chomp($line =);? ? #习惯用法,效果同上如果读到文件结尾(end-of-file),"行输入"操作符就会返回undef。这样的设计是为了配合循环使用,可以自然地跳出循环:while (defined($line =)) {? ? print "I saw $line";?}while () {? ? print "I saw $_";?}foreach () {? ? print "I saw $_";?}注意:?在while循环和foreach的循环时是不同的,while循环时,perl会读取一行输入,把它存入变量并且执行循环的主体。接下来,它会回头去寻找其他的输入行。但是在foreach循环里,“行输入”操作符会在列表上下文中执行(因为foreach需要逐项处理列表的内容)。为此,在循环能够开始执行之前,它必须先将输入全部读进来。假如输入来自4000M大小的WEB服务器日志文件,他们的差异会十分明显!因此最好的做法,通常是尽量使用while循环的简写,让它每次处理一行。2、钻石操作符输入perl中有一种读取输入的方法,就是使用?钻石操作符<>。例如:[root@localhost aaa]# cat aaa.txt?aaabbbccc[root@localhost aaa]# cat test2.pl?#!/usr/bin/perl#test2while (<>) {chomp; ? ?????? ? #不加参数时,chomp会直接作用在$_上。节约按键,从小地方做起。print "I was $_ that I saw!n";}[root@localhost aaa]# ./test2.pl aaa.txt?I was aaa that I saw!I was bbb that I saw!I was ccc that I saw!注意:假如钻石操作符无法打开某个文件并读入内容,便会显示相关的出错诊断信息,就像:不能打开wilma:无此文件或目录(can't open wimal: No such file or directory)然后钻石操作符会自动跳到下一个文件,就像cat或其他标准工具程序的做法一样。3、钻石操作符调用参数钻石操作符其实不回去检查调用参数,它的参数其实是来自@ARGV数组,这个数组是perl实现内建起来的特殊数组。钻石操作符会查看数组@ARGV以决定该用哪些文件名,如果它找到的是空列表,就会该用标准输入流;否则,就会使用@ARGV里的文件列表。例如:[root@localhost aaa]# ?cat 1.txt?nihaobeijing[root@localhost aaa]# cat 2.txt?nihaoshanghai[root@localhost aaa]# cat 3.txt?nihaoguangzhou[root@localhost aaa]# cat test2.pl?#!/usr/bin/perl#test2@ARGV = qw# 1.txt 2.txt 3.txt #;????????? ? #强制让钻石操作符读这三个文件。while (<>) {chomp;print "I was $_ that I saw!n";}[root@localhost aaa]# perl test2.pl?I was nihao that I saw!I was beijing that I saw!I was nihao that I saw!I was shanghai that I saw!I was nihao that I saw!I was guangzhou that I saw!4、标准输出print <>;?????????? ? #和Unix下的cat类似print sort <>;????? ? #和Unix下的sort命令功能差不多。print (2+3);????? ? #它会打印5。5、使用 printf格式化打印输出[root@localhost ~]# cat test.pl?#!/usr/bin/perl#test$user = zhangsan;$days_to_die = 30;printf "Hello,%s; your password expires in %d days!n",$user,$days_to_die;????? ? #%s 指定字符串格式, %d指数字格式[root@localhost ~]# perl test.plHello,zhangsan; your password expires in 30 days![root@localhost ~]# cat test.pl#!/usr/bin/perl#test$user = zhangsan;$days_to_die = 30;printf "Hello,$days_to_die;printf "%g %g %gn",5/2,51/17,51 ** 17;printf "in %d days!n",17.85;printf "%6dn",42;printf "%2dn",2e3 + 1.95;printf "%10sn","wilma";printf "%-10sn","wilma";printf "%12fn",6 * 7 + 2/3;printf "%12.3fn",6 * 7 + 2/3;printf "%12.0fn",6 * 7 + 2/3;printf "Monthly interest rate: %.2f%%n",5.25/12;[root@localhost ~]# perl test.plHello,zhangsan; your password expires in 30 days!2.5 3 1.0683e+29in 17 days!? ? 422001? ? ?wilmawilma ? ??? ?42.666667? ? ? 42.667? ? ? ? ? 43Monthly interest rate: 0.44%6、文件句柄有六种特殊文件句柄是Perl保留的,它们的名字是STDIN、STDOUT、STDERR、DATA、ARGV和ARGVOUT。虽然你可以选择任何喜欢的文件句柄名,但不应使用保留的名字,除非确实需要以特殊方式使用上述六个句柄。7、打开文件句柄open CONFIG,"open BEDROCK,">fred";open LOG,">>logfile";my $selected_output = "my_output";open LOG,"> $selected_output";在相对新的Perl(5.6版之后)中,open另有一种使用三个参数的写法:open CONFIG,"<","dino";open BEDROCK,">",$file_name;open LOG,">>",&logfile_name();8、关闭文件句柄close LOG;close CONFIG;close BEDROCK;9、使用文件句柄print LOG "北京欢迎你!n";printf STDERR "%s.n",aasdf;10、改变默认的文件输出句柄select BEDROCK;print "I hope Mr. Slate doesn't find out about this.n";print "Wilma!n";默认情况下,假如你不为print(printf)指定文件句柄, 它的输出就会送到STDOUT。不过你可以使用select操作符来改变默认的文件句柄。$I=1,如果你想改回原先的STDOUT,可以用它本文来源:http://www.benet.wang/perl%E7%BC%96%E7%A8%8B/89.html";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读