zoukankan      html  css  js  c++  java
  • Perl中的输入输出流(三)

    Perl中读取标准输入:<STDIN>

               foreach (<STDIN>)  { print "I saw $_";}

    钻石操作符<>:它的参数来源于@ARGV数组。

               先检查@ARGV数组,如果为空,则从标准输入流输入。@ARGV的值可以来自命令行,也可以自己赋值。

               ./program  fred  barney betty     #@ARGV的值便是命令行后的三个文件。

               while (<>)   {  chomp;   print "It's was $_ that I saw";}

    Perl中的标准输出:print。输出多项时,可以通过加","来隔开,各自用双引号括起。

                用print输出数组时。print @array;  #会输出@array中所有元素,以空格分隔。相当于数组内插。

                用printf格式化输出。%g/%d/%s/     printf  “The items are: ”.("%10s "x@items), @items;  #定义多个%s

                注意print加括号时是显式的函数调用,是列表上下文,返回列表。不加括号时,返回标量0/1。

                print <>;     将输入直接输出。

    文件句柄:代表Perl进程与I/O之间联系的名称,而不是说一个文件的名称,

    Shell中的文件I/O流:      ./program  <dino  >wilma          #表示从文件dino输入,输出到wilma,Perl程序仍然是输入STDIN,

                                                                                         输出到STDOUT。剩下的部分由Shell来处理。

                                       netstat  |  ./your_program    2>/tmp/my_errors   #对STDERR重定向。

    裸字(bareward)文件句柄:  open  CONFIG,  '< dino';     #打开dino文件作为输入,文件句柄的操作符叫CONFIG。

                          Perl中默认打开的文件句柄是输入。'>'输出,'>>'追加在某个已经存在的文件后。注意将文件用单引号括起来。

                                          close CONFIG;                    #关闭文件句柄

    使用标量变量的文件句柄:一般先用词法变量my来定义。

                         my  $rocks_fh;

                         open $rocks_fh,  '>', 'file.txt';               #一般用后缀_fh来表示文件句柄。

                         close $rocks_fh

     用标量变量作为句柄比裸字作为句柄更加方便,标量变量可以作为参数传递和数组哈希这些数据结构中的元素。

    在Perl中可以使用die和warning来,分别结束当前Perl进程,和输出warning到STDERR。

                           die "Cannot create LOG flie:$!"      #$!表示进行系统调用时的返回值。Perl默认会将Perl文件名和行号加在log中。

                           die "Cannot create LOG flie:$! "     #加了换行符后,Perl不会再加入文件名和行号。  

    使用文件句柄来输入时:直接在<>括号中加入句柄名。

                           while (<PASSWD>)   {......}       

    使用文件句柄来输出时:在print/printf 后加入文件句柄名。但是不要加逗号,否则会当做需要输出字符串的字数的一部分。或者直接用

                          花括号{}将文件句柄的名字括起来。

                           print  {LOG}  "HAHA";   

    改变默认的文件句柄,使用select关键字。 select LOG;   select STDERR;

    从Perl5.10开始,可以使用say来代替print。say会自动在输出的字符结束添加换行符。

  • 相关阅读:
    [考试反思]0421省选模拟76:学傻
    [考试反思]0420省选模拟75:安在
    [考试反思]0418省选模拟74:杂枝
    [考试反思]0417省选模拟73:纠结
    [考试反思]0416省选模拟72:停滞
    [考试反思]0415省选模拟71:限制
    [考试反思]0414省选模拟70:阻塞
    [考试反思]0413省选模拟69:遗弃
    [考试反思]0411省选模拟68:毒瘤
    [考试反思]0410省选模拟67:迷惑
  • 原文地址:https://www.cnblogs.com/-9-8/p/4485922.html
Copyright © 2011-2022 走看看