perl语言中的循环控制函数主要有for/foreach/while,
其中for与foreach的意义基本相同只不过格式上有所变化,
主要还是需要关注一下foreach与while的不同之处,通过
自己的验证发现才能印象深刻。
foreach(){
print;
}
while(){
print;
}
上面两段代码都能将文件的内容打印到屏幕上,并且是按行打印,但是它们在读取文件时的方式
是不同的,foreach函数是一次性的将文件内容全部读进来然后再逐行赋给循环中,while是一行
一行的读取文件的,所以while的每次循环的行数($.)是递增的,而foreach的($.)是直接达到文件的结尾值.
请读者试运行一下下面的例子:
foreach(){
print("\$\.=$.\n");
print;
}
while(){
print("\$\.=$.\n");
print;
}
思考如下问题:
有两个文件file1和file2,需要编写一个脚本来实现如下功能:打印出file2中所有包含file1中的任一行的字符
下面这段代码有何不妥之处,应如何修改才能实现目的。
open(AA,"file1");
open(BB,"file2");
foreach(){
print("\$\.=$.");
$temp=$_;
foreach(){
#print("temp=$temp\n");
if(/$temp/)
{
print;
}
}
}
close BB;
close AA;
其中for与foreach的意义基本相同只不过格式上有所变化,
主要还是需要关注一下foreach与while的不同之处,通过
自己的验证发现才能印象深刻。
foreach(){
}
while(){
}
上面两段代码都能将文件的内容打印到屏幕上,并且是按行打印,但是它们在读取文件时的方式
是不同的,foreach函数是一次性的将文件内容全部读进来然后再逐行赋给循环中,while是一行
一行的读取文件的,所以while的每次循环的行数($.)是递增的,而foreach的($.)是直接达到文件的结尾值.
请读者试运行一下下面的例子:
foreach(){
}
while(){
}
思考如下问题:
有两个文件file1和file2,需要编写一个脚本来实现如下功能:打印出file2中所有包含file1中的任一行的字符
下面这段代码有何不妥之处,应如何修改才能实现目的。
open(AA,"file1");
open(BB,"file2");
foreach(){
}
close BB;
close AA;