perl学习之I/O基础
1.从标准输入进行输入<STDIN>
2.从钻石操作符进行输入<>
3.参数调用@ARGV
4.向标准输出进行输出
5.用printf进行格式化输出
1.<STDIN>
while(<STDIN>)
{
print "I saw $_";
}
while(defined($_ = <STDIN>)){
print "I saw $_";
}
NOTE:行输入操作符<STDIN>和Perl最喜欢的缺省变量($_)之间没有任何关系。
foreach (<STDIN>){
print "I saw $_";
}
这个输入到底何时结束呢?????列表输入结束完才进入循环。
foreach 的缺省控制变量是$_。
foreach 循环中,行输入操作符用在列表上下文中(因为foreach只能遍历一个列表)。所以他必须读入所有的输入,然后循环才能开始执行。
2.<>
while(defined($line = <>)){
chomp($line);
print "It was $line that I saw!\n";
}
while(<>){
chomp;
print "It was $_ that I saw!\n";
}
<>钻石操作符通常用来处理整个输入,所以如果你的程序中不止一次使用了它,那么一般来说这是一个错误。
<>钻石操作符读取输入,但输入本身(一般在缺省情况下)是在$_中。
<>钻石操作符会自动继续下一个文件,很像你对cat或其他标准工具所期望的那样。
2.参数调用
@ARGV当程序启动后,已经被填入了调用参数的完整列表。
可以用shift对@ARGV操作。
3.向标准输出进行输出
print 操作符取一个值得列表,然后把每一个条目(当然作为字符串)按顺序发送到标准输出,一个接一个。它不添加额外的字符在条目的前面、后面或两个条目之间。
它不会(缺省地)添加任何东西,但这个缺省行为可以改变。
print @array; #打印条目的一个列表
print "@array"; #打印一个字符串(包含一个替换的数组) 《===这个经常用,但没看懂。
print 是寻找一个字符串列表来打印,它的参数计算就在列表上下文中进行。<>钻石操作符(作为一种特殊的行输入操作符)在列表上下文中会返回一个行的列表。
所以print 和 <>可以配合使用。
eg: print <> ;
print sort <>;
如果print的调用看起来像一个函数调用,那么它就是个函数调用。
eg: print (2+3);
print (2+3)*4 ###值为4,打印出5。
规则:“如果它看起来像一个函数调用,那么它就是一个函数调用”适用于Perl的所有列表函数,而不仅仅是print。
4.用printf格式化输出
5.数组与printf
不能用一个数组作为printf的参数,数组可以含有任意数目的条目,一个给定的格式字符串只能与一定数目的条目一起工作。
但格式字符串可以动态给出,利用数组。
perl学习之I/O基础的更多相关文章
- Perl 学习笔记-正则表达式基础篇
1.Perl中的正则表达式 在Perl中叫做模式, 是一个匹配(或不匹配)某字符串的模板, 是一种小程序, 对于一个字符串, 要么匹配, 要么不匹配. 使用简易模式: 将模式写在一对正斜线(/)中即可 ...
- JavaScript学习(1)之JavaScript基础
JavaScript学习(1)之JavaScript基础 由于工作原因,开发语言逐渐以JavaScript为主,所以,抽空学习了下JavaScript语法.等现阶段的工作稳定之后,陆续会分享下自己在学 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- 转 iOS Core Animation 动画 入门学习(一)基础
iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...
- Django学习系列之Form基础
Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- CgLib动态代理学习【Spring AOP基础之一】
如果不了解JDK中proxy动态代理机制的可以先查看上篇文章的内容:Java动态代理学习[Spring AOP基础之一] 由于Java动态代理Proxy.newProxyInstance()的时候会发 ...
- (转)深度学习word2vec笔记之基础篇
深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...
随机推荐
- SpringBlade 2.0-RC3 发布,全新的微服务开发平台
经过了十天的艰苦奋斗,SpringBlade 2.0-RC3发布了,此版本增加了很多有用的功能,距离正式版本更近一步! SpringBlade简介: SpringBlade 2.0 是一个基于 Spr ...
- SqlServer 分页批按时间排序
sql server 分页按时间排序 select * from (select<include refid="Base_Column_List"/>, ROW_NUM ...
- java的无序机制
简单说一下上面提到的无序写,这是jvm的特性,比如声明两个变量,String a; String b; jvm可能先加载a也可能先加载b.同理,instance = new Singleton();可 ...
- UVa10375:选择与除法(唯一分解定理)
The binomial coefficient C(m,n) is defined as Given four natural numbers p, q, r, and s, compute the th ...
- sgu316Kalevich Strikes Back(线段树+扫描线)
做法:总体想法是求出一个矩形的面积以及它所包含的矩形,然后用自己的面积减掉所包含的.主要问题是怎样求解它所包含的矩形. 因为是没有相交点的,可以利用扫描线的方法去做,类似染色,当前段如果是x色,也就是 ...
- Linux防火墙iptables配置开放某个端口
开放某个端口 查看防火墙规则命令: iptables -L -n 添加端口 1.编辑iptables文件 vim /etc/sysconfig/iptables 2.添加开放端口配置 -A INPUT ...
- [转]POI : How to Create and Use User Defined Functions
本文转自:http://poi.apache.org/spreadsheet/user-defined-functions.html How to Create and Use User Define ...
- Oracle数据仓库创建教程
Oracle数据仓库创建教程.如何创建一个数据仓库,创建实例,以为毕业设计要求,最近开始Oracle的数仓建模实践,详细记录了图形界面下的 Oracle database 12C 数据仓库创建过程. ...
- ls参数
-a 全部文件 -A 与a差不多,但是不包括.和..开头的两个目录 -d 仅列出目录 -f 直接列出结果,不进行排序 -h 列出文件大小 -i 列出inode的位置,而非列出文件属性 -l 列出长数据 ...
- Spring Boot: Spring Starter Project
好久没有创建过新项目,楼主发现Spring Boot项目创建失败了!!! 其中有两处错误: [图一不知道是哪里错,果断删掉重输入一次.成功进入下一步 其余步骤也没有错误,然而 最后一步失败了,如图 ...