首页 > 编程语言 ><Perl>标准输入输出

<Perl>标准输入输出

时间:2022-09-01 23:12:20浏览次数:64  
标签:读取 输入输出 标准 while 参数 数组 print 输入

标准输入

在Perl中标准输入是<STDIN>, 它会读取一行输入直到遇到换行符号,如果你不想读入换行符号,你可以使用chomp操作符去掉换行符号

chomp($line = <STDIN>);
print "$line"."world";

当在while循环的表达式上使用的时候,Perl会将读取的数据存储在变量$_, 这是Perl的内置变量。

while (<STDIN>) {
    print "I see $_";
}

我们也可以在for循环的表达式上使用

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

如果你不想读入换行符号, 可以这样使用

while (<STDIN>) {
    chomp;
    print "I see $_";
}

这两者是有区别的,在while循环中, Perl会读取一行输入,将它存入某个变量并且执行循环的主体,然后继续读取,但是在foreach中行输入符号会在列表上下文中执行,为此在执行主体前它必须将输入全部读入进来

如果在处理网站日志的时候,使用foreach这样的读取将会变得很慢

来自钻石操作符号的输入

还有一种读取输入的方法,就是使用钻石操作符号,

while (<>) {
    print "I see $_\n";
}

我们在命令行中输入下面这个命令perl test.pl a.txt b.txt, 意思是:执行perl test.pl命令,然后处理文件a,接着处理文件b.

如果不提供任何调用参数,程序会从标准输入流中采集数据,但是有一个例外,如果把连字符号(-),
当作参数,则表示要从标准输入中读取数据,所以假如调用参数是fred-betty,那么程序应该先处理fred,然后处理标准输入流中提供的数据,最后才是文件betty

让程序以这样的方式来运行的好处就是,你可以在运行时候指定程序的输入源

调用参数

从技术上来看,钻石操作符号其实不会去检查命令行参数,它的参数其实都是来自@ARGV数组,这个数组是由Perl解释器事先建立好的特殊数组,其中的内容就是由命令行参数组成的列表,换句话说,它和别的数组没有什么不一样的地方,只不过程序在开始运行的时候,这个数组中就塞满了参数

你可以像使用其它数组一样来使用@ARGV,你可以把元素从它里面shift出去,或者使用foreach进行处理

你也可以检查是否有参数是以连字符(-)开头的,然后将它们当成选项处理

@ARGV = qw/a.txt b.txt/;
while (<>) {
    chomp;
    print "It was $_ that I saw in some stooge-like file\n";
}

输出到标准输出

print操作符号会读取后续列表中的所有元素,并把每一项(当然是一个字符串)一次送到标准输出,

直接使用数组和使用数组内插在打印效果上是不同的

@array = qw/a b c/;
print "@array";
print @array;

数组加上双引号之后,元素之间出现空格,但是没有加上双引号的时候是没有空格子的


暂时先抄到这里

标签:读取,输入输出,标准,while,参数,数组,print,输入
From: https://www.cnblogs.com/zhengel/p/16648160.html

相关文章