perl学习之I/O基础

1.从标准输入进行输入<STDIN>

2.从钻石操作符进行输入<>

3.参数调用@ARGV

4.向标准输出进行输出

5.用printf进行格式化输出


1.<STDIN>

while(<STDIN>)

  {

   print "I saw $_";

  }

 while(defined($_ = <STDIN>)){

     print "I saw $_";

  }

NOTE:行输入操作符<STDIN>和Perl最喜欢的缺省变量($_)之间没有任何关系。

foreach (<STDIN>){

print "I saw $_";

}           

这个输入到底何时结束呢?????列表输入结束完才进入循环。

foreach 的缺省控制变量是$_。

foreach 循环中,行输入操作符用在列表上下文中(因为foreach只能遍历一个列表)。所以他必须读入所有的输入,然后循环才能开始执行。

2.<>

while(defined($line = <>)){

chomp($line);

print "It was $line that I saw! ";

}

while(<>){

chomp;

print "It was $_ that I saw! ";

}

<>钻石操作符通常用来处理整个输入,所以如果你的程序中不止一次使用了它,那么一般来说这是一个错误。

<>钻石操作符读取输入,但输入本身(一般在缺省情况下)是在$_中。

<>钻石操作符会自动继续下一个文件,很像你对cat或其他标准工具所期望的那样。

2.参数调用

@ARGV当程序启动后,已经被填入了调用参数的完整列表。

可以用shift对@ARGV操作。

3.向标准输出进行输出

print 操作符取一个值得列表,然后把每一个条目(当然作为字符串)按顺序发送到标准输出,一个接一个。它不添加额外的字符在条目的前面、后面或两个条目之间。

它不会(缺省地)添加任何东西,但这个缺省行为可以改变。

print @array;  #打印条目的一个列表

print "@array"; #打印一个字符串(包含一个替换的数组)  《===这个经常用,但没看懂。

print 是寻找一个字符串列表来打印,它的参数计算就在列表上下文中进行。<>钻石操作符(作为一种特殊的行输入操作符)在列表上下文中会返回一个行的列表。

所以print  和 <>可以配合使用。

eg: print <> ;

      print sort <>;

如果print的调用看起来像一个函数调用,那么它就是个函数调用。

eg: print (2+3);

      print  (2+3)*4  ###值为4,打印出5。

规则:“如果它看起来像一个函数调用,那么它就是一个函数调用”适用于Perl的所有列表函数,而不仅仅是print。

4.用printf格式化输出

5.数组与printf

不能用一个数组作为printf的参数,数组可以含有任意数目的条目,一个给定的格式字符串只能与一定数目的条目一起工作。

 但格式字符串可以动态给出,利用数组。

原文地址:https://www.cnblogs.com/chip/p/4183839.html