输入输出

2019-03-22  本文已影响0人  食梦狸猫

读取标准输入

<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开始,可以把文件句柄放在标量变量中.

上一篇下一篇

猜你喜欢

热点阅读