读取标准输入:
while(<STDIN>){
print "I saw $_";
}
foreach(<STDIN>){
print "I saw $_";
}
注意这两个的实际执行过程略有不同
钻石操作符输入:钻石操作符<>能让程序在处理调用参数的时候,提供类似标准Unix工具程序的功能
钻石操作符是“行输入”操作符的特例,它并不从键盘获得输入,而是从用户指定的位置读取
while(defined($line=<>)){
...
}
调用参数:钻石操作符其实不会检查调用参数,它的参数来自@ARGV数组,这是有perl解释器事先建立的数组,
其内容就是由调用参数组成的列表。
钻石操作符会查看数组@ARGV以决定该用哪些文件名,如果是空列表,则改用标准输入流
下面程序强制让钻石操作符读取指定的三个文件
@ARGV= qw#
larry moe curly#;
while(<>){
chomp;
...
}
使用printf格式化输出:类似于C语言
%g恰当的数值形式,会按需要自动选择浮点数、整数、指数
%d十进制整数,舍去小数点后的数字(非四舍五入)
%s字符串格式
%f浮点数,按需要四舍五入
百分号和字母之间可以加数字,表示宽度,若用负数,表示左对齐
数组和printf:一个小技巧
printf "The
items are:\n".("s\n" x @items),@items;
程序会先输出标题,然后每个元素显示成独立的一行,每行右对齐,字段一律10个字符宽
文件句柄:程序里代表perl进程与外界之间的I/O联系的名字,不一定是文件名
习惯上用全大写字母来命名文件句柄
perl六个保留文件句柄STDIN、STDOUT、STDERR、DATA、ARGV、ARGOUT
打开文件句柄:open CONFIG,"dino"; #打开名为CONFIG的文件句柄,让它指向文件dino
open
CONFIG,"<dino"; #此文件只是用来输入的,与上一行完全相同,是默认操作
open
BEDROCK,">fred";
#输入到新文件fred,如果已存在fred,清楚原有内容并以新内容取代
open
LOG,">>logfile"; #已追加方式打开文件
在新版本perl中,上述都可以写成open CONFIG,"<","dino";的形式
关闭文件句柄:close BEDROCK;
用die处理严重错误:die函数会输出你指定的信息,并让程序立即终止,并返回不为0的退出码
if (! open
LOG,">>logfile"){
die "Can not create logfile:$!";
}
$!是可读的系统出错信息
die还会自动将perl程序名和行号附加在错误信息后面,上面的出错信息就是
Can not
create logfile:permission denied at your_program line 12.
使用warn输出警告信息:warn函数和die函数功能差不多,不同之处在于最后一步,它不会终止程序的运行。
改变默认的文件输出句柄:默认情况下,如不为print指定文件句柄,它的输出就会送到STDOUT
可以使用select操作符来改变默认的文件句柄,下面例子输入到BEDROCK文件句柄
select
BEDROCK;
print
".....\n";
select
STDOUT;
复用标准文件句柄:如果要复用某个文件句柄,perl会自动关闭原有的文件句柄
使用say来输出:5.10新增了say函数,功能和print函数差不多,但是在每行输出的结尾自动加上换行符
print
"hello\n";等同于say "hello";