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

perl语言入门(4)

发布时间:2020-12-16 00:38:08 所属栏目:大数据 来源:网络整理
导读:? 第五章 输入与输出 1.读到文件的结尾,STDIN会返回undef。 ??? print (); ??? 其实也是一个函数调用,括号可有可无。 ??? print (2+4)*2 ??? # 相当于(print 2+4)*2 ??? -连字符相当于标准输入 ??? print 2*(2+4) # 这个是正确的 ??? 如果在列表上下文中调

第五章 输入与输出
1.读到文件的结尾,<STDIN>会返回undef。
??? print ();
??? 其实也是一个函数调用,括号可有可无。
??? print (2+4)*2
??? # 相当于(print 2+4)*2
??? -连字符相当于标准输入
??? print 2*(2+4) # 这个是正确的
??? 如果在列表上下文中调用'行输入'操作符,它会返回一个列表
??? 例如模拟cat,print <>;

2.钻石操作符的输入
??? 是行输入操作符的特例,不是从键盘区的输入,而是从用户指定的位置
??? 读取。指定的位置由@ARGV的元素确定。
??? 相当于shell的位置参数如果@ARGV为空则改用标准输入.
???
??? ## 这是一种简写 只有在while (<>)或for,这种简写情况下才会把读入放入
?????????? 老地方$_.
??? @ARGV = qw/abc.txt/;
??? while (<>) {
??? ??? print "$_";
??? }
??? 对于当前正在处理的从位置参数获取的文件其文件名保存在
$ARGV变量中
perl -n -e ' if (/bxxb/) {print " $ARGVn";last}' *
# 列出当前含有xx词的文件
# b边界针对的是w组成的单词。 ??? while是一行一行的读入,而foreach是全部读入。 ??? while.foreach都有$_ 3.printf格式化输出 ??? print示例: ??? my @array = qw/a b c d e/; ??? print @array,"n"; #只打印元素没有空格 ??? print "@array";??? #数组元素间用空格隔开 ??????? 一般情况下输出会先送到缓冲区. ??? 格式 printf "%s test %dn",$user,$days; ??? # 格式字符串个数=变量个数 ? 数组和printf ??????? my @items = qw(wilama dino pebb); ??? my $format = "%10sn" x @items; ??? printf $format,@items; 4.文件句柄 ? 最好大写,6个特殊文件句柄STDIN,STDOUT,STDERR,DATA,ARGV,AGVOUT ? 打开文件句柄 ? open LOG,"dino";#默认从dino读入 ? open LOG,"<dino";#同上 ? open LOG,">>dino";# 追加 ? ## >,>> 若果文件不存在就创建. ? close LOG #关闭文件句柄 5.die处理严重错误 ? die输出指定信息,并且程序立刻终止,返回不为0的退出码. ? 并且打印出错的程序名和行号.如果在die信息尾加n,则不打印. ? if (! open LOG,">dino") { ??? die "Cannot create file: $!" ?? #die "Cannot create file: $!n" ? } ? ## $!系统出错信息比方permission denied 6.使用文件句柄 ? if (! open LOG,"/etc/passwd") { ??? die "hello,($!)"; ? } ? ? while (<LOG>) { ?? print "$_"; ? } ? # 默认每个文件的行都是字符串+n ? print OUT "first"; ? print OUT ("second"); ? # 结果firstsecond 7,print默认输出到STDIN ?? 改变文件句柄 ?? select OUT; ?? # 默认输出到文件句柄时都会经过缓冲 ?? # $| =1 立刻刷新缓冲区 ?? print "first"; ?? # 文件句柄改回STDOUT ?? select STDOU; 8. 文件句柄复用 ?? 如果打开了句柄OUT,? 又打开了同名的句柄OUT,则先前的会自动关闭 ?? ?? 复用默认的文件句柄 ?? if (! open STDOUT,">fuyong") { ???? die "heloo,$!n"; ??? } ?? print "test STDOUT repeat.n"; ?? ## 还不知道怎么还原STDOUT 9. 使用say来输出,要在perl5.10声明use 5.010;才能使用say ?????? say函数和print函数差不多,但是会在每行输出的结尾自动加上换行符。

(编辑:李大同)

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

    推荐文章
      热点阅读