perl学习笔记

在while 循环中,Perl 读入一行,将它赋给变量,然后进入循环。再回到开头,读入下一行。但在foreach 循环中,由于行输入操作在列表的context 中使用,因为foreach 需要一个列表作为其参数。因此,它在循环执行前会将所有的输入读入。

这种区别在读入一个400MB 的web 服务器的log 文件时非常明显。通常使用while 循环是一种更好的方法,因为它一次处理一行输入。

 

$ ./my_program fred barney betty

上述命令的含义是,运行my_program(在当前目录下),它将处理文件fred,再处理文件barney,最后是文件betty。

如果没有命令行参数,程序将处理标准输入流(standard input stream)。

作为一个特例,如果将连接号(-)作为一个参数,其含义也是标准输入◆。

如果调用参数为fred –betty,其含义是程序将首先处理文件fred,其次是标准输入流,最后是文件betty。

◆这是Unix 中很少人知道的一个事实:如许多标准的工具,如cat, sed, 也使用这种约定,连接号(-)代表标准输入流。

 

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

    chomp($line);

    print “It was &line that I saw!\n”;

}

运行此程序,调用参数为fred, barney, betty,则结果大概如下:

“It was [a line from file fred] (文件中fred 的一行)that I saw!”,

“It was [another line from file fred](文件fred 中的另一行) that I saw!”,直到文件fred 的结尾。然后,将自动转到文件barney,一行一行的输出,最后到文件betty。

posted @ 2012-08-21 21:00  nalasun  阅读(148)  评论(0编辑  收藏  举报