1、获取用户输入:
1)“行输入”操作符<STDIN>:默认是从标准输入读进一行文字(直到换行符为止)
<STDIN>返回的字符串,一般在最后都会跟有一个换行符。
eg:
$line=<STDIN>;
if($line eq "n"){
??? print "that is just a blank linen";
}else{
??? print "that line of input was:$line";??
}
2)chomp 操作符
功能:移除末尾换行符;
????? 如果末尾有两个以上的换行符,chomp也仅仅删除一个;
????? 如果结尾处没有换行符,什么也不做,直接返回零。
返回值:实际移除的字符数
=====================================
$fred ="hellon";
my $p=chomp($fred);
print "======$p====";
print "======$fred====";
E:perl>perl p.pl
======1==========hello====
E:perl>
=====================================
2、从钻石操作符输入:
钻石操作符:<>
功能:它是 ”行输入“ 操作符(<STDIN>) 的特例,它并不专门从键盘那获取输入,而还可以从
用户指定的位置读取(这个位置可能是某个文件,也可能是个其他的设备)。
=================================================================
程序1:
while (<>) {?
?if ($_=~/stop/i) {
??? last;
?} else {
??? print "It was $_";
?}
结果1:
E:perl>perl p.pl
ccc
It was ccc
iii
It was iii
stop
E:perl>
}
当直接运行这个程序时,会每次从标准输入读取一行输入,然后输出。标准输入相当于文件名 是
'-',如下:
结果2:
E:perl>perl p.pl -
ccc
It was ccc
iii
It was iii
stop
结果3:
E:perl>perl p.pl pp.pl
It was -------
It was pppppp
E:perl>
可以在程序名后给出一个文件名作为命令行参数,程序会从文件中读取内容,每次读取一行,直
到读完为止。其中“-------”和“pppppp”是文件pp.pl中的字符串。
===============================================================
3、调用参数
??? 严格来说,钻石操作符并不好去检查调用参数,它靠的是@ARGV数组。这个数组是由perl解释
器事先建立的特殊数组,其内容就是调用参数所组成的列表。
??? 钻石操作符如何绝对使用那些文件名?方法如下:它会查找@ARGV,如果它找到的是空列表,
就会改用标准输入流;否则,就会使用@ARGV里的文件列表。这表示程序开始运行之后,只要尚
未使用钻石操作符,就都可以对@ARGV动点手脚。eg:
===================================================================
@ARGV = qw / larry moe curly /; #larry moe curly要为实际存在的文件名
while (<>) {
chomp;
print "It was $_n ";
}
结果:
E:perl>perl p.pl hh dd cc??? ---后面随意跟哪些文件名,都不会改变结果了。
It was -------
?It was pppppp
?It was -------
?It was pppppp
?It was -------
?It was pppppp
E:perl>perl p.pl hh
It was -------
?It was pppppp
?It was -------
?It was pppppp
?It was -------
?It was pppppp
E:perl> ===================================================================