|
1 基本输入输出
在 BASH 脚本程序中,我们用 read var 来实现从键盘的输入,用 echo $var 来实现输出。那么在 Perl 中将有一点变化。Perl 中将标准输入用关键词 表示;标准输出用 表示,标准错误输出用 表示。故而从标准输入读取数据可以写成:
$var=; # 读取一行输入,并存入变量 $var 中。
@var=; # 读取多行输入,并存入数组 @var 中。
在 Perl 语言中,变量 $_ 是许多操作符的缺省变量。因此如果需要读入许多行并对每行分别处理一般这样写:
while($_=){
chop($_); # chop 调用用于去掉 $_ 变量中的最后一个字符(换行符)。
# 处理$_(每一行)
}
或者可以简写为:
while(){
chop; # 等同于chop($_)
# 处理$_(每一行)
}
如果 <> 括号之间没有任何字符,则表示从命令行所指示的文件中读取数据,看下面这个例子(read.pl):
#!/usr/bin/perl;
while(<>){
print $_;
}
如果在命令行输入 $ perl read.pl read.pl 。这个程序将在屏幕上打印出文件 read.pl 的每一行。
在前面的例子中我们已经看见,Perl 语言中向标准输出输出数据可以用 print 语句。我们在 print 语句中可以输出多个变量,变量之间用 "," 分隔开来。如下面的例子:
print 3,45*2,"hello",2+2;
上面的输出语句将给出 "390hello4" 的输出结果。
除了 print 语句以外,Perl 中还提供了一个 printf 语句用于标准输出,不过 printf 更接近于 C 语言的 printf 函数,可以进行格式化的输出,如:
printf "%10s% 8d%8.2f\n",$a,$b,$c;
printf("%10s% 8d%8.2f\n",$a,$b,$c); # 加上括号的 C 语言写法也是可以的。
另外 print 和 printf 在输出数组变量的时候也是不同的,如下例:
@a = (1 , 2, 3);
printf @a;
print "\n";
print @a;
print "\n";
输出的结果是:
1
123
如果在 @a 两边加上 "" ,则输出就都是 123了。
[1] [2] [3] [4] [5] 下一页 |