美文网首页
输入输出

输入输出

作者: 食梦狸猫 | 来源:发表于2019-03-22 17:39 被阅读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开始,可以把文件句柄放在标量变量中.

    相关文章

      网友评论

          本文标题:输入输出

          本文链接:https://www.haomeiwen.com/subject/nuurvqtx.html