读取标准输入
<STDIN>
来自砖石操作符的输入
<>读入执行程序用户给的命令行参数(@ARGV)
调用参数
ARGV数组是Perl解释器创建的特殊数组,我们也可以对ARGV数组进行操作
@ARGV = qw / larry moe curly /;
while( <> )
{
...
}
输出到标准输出
print
Perl提供的printf可以进行格式化输出
要输出恰当的数字类型,可以用%g,它会按照需要自动选择数字类型。
文件句柄
有6个特殊文件句柄名是Perl保留的,它们是: STDIN,STDOUT,STDERR,DATA,ARGV,ARGVOUT
打开文件句柄
使用open操作符
open CONFIG ,'dino';
打开一个名为CONFIG的文件句柄,指向文件dino。
open CONFIG ,'<dino';
和上行一样,不过用<声明这文件是用来读取的
open BEDROCK, '>fred';
输出到新文件fred,如果fred文件已经存在,那么就清楚原来的内容然后取代
open LOG, '>>logfile'
表示以追加的方式输出
打开文件也可以写成:
open LOG,'>>','dino';
以二进制方式读写文件句柄
用操作符binmode
有问题的文件句柄
如果试着从有问题的文件句柄(即没有正确打开的或者关闭的网络连接和文件)读取数据,会立刻读到文件尾。如果试图把数据写入,那么数据会丢失。
对于这种情况,可以通过open的返回值判断
关闭文件句柄
用操作符close
用die处理致命错误
die函数让我们能自己触发致命错误并给出错误信息,并且还会自动把Perl程序名和行号附加在错误信息后面。
if(@ARGV < 2)
{
die "Not enough arguments\n";
}
自动检测致命错误
使用编译指令 use autodie;
就可以不用写繁琐的die了
使用文件句柄
open PASSWD, "/etc/passwd"
while(<PASSWD>)
{
...
}
以读模式打开后,就可以读取一行行的数据。
输出也是
print STDERR "hello";
改变默认的文件输出句柄
如果不为print指定文件句柄,它的输出就会送到STDOUT,我们可以用select操作符来改变
select BEDROCK;
print "hello";
重新打开标准文件句柄
if(!open STDERR, "error_log"){
die "error";
}
若重新打开失败,则自动还原为原来的句柄
用say来输出
say在打印内容时会自动加上换行符
标量变量中的文件句柄
从Perl5.6开始,可以把文件句柄放在标量变量中.
网友评论