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!\n";
}
while(<>){
chomp;
print "It was $_ that I saw!\n";
}
<>钻石操作符通常用来处理整个输入,所以如果你的程序中不止一次使用了它,那么一般来说这是一个错误。
<>钻石操作符读取输入,但输入本身(一般在缺省情况下)是在$_中。
<>钻石操作符会自动继续下一个文件,很像你对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的参数,数组可以含有任意数目的条目,一个给定的格式字符串只能与一定数目的条目一起工作。
但格式字符串可以动态给出,利用数组。