你可以按照你叙述的顺序来做。
打开md1.mdcrd文件读取内容-->做相应计算-->关闭md1.mdcrd文件
打开结果文件-->追加写入计算结果-->关闭结果文件
重复上述算法,分别将md2.mdcrd和md3.mdcrd的内容计算后将计算结果追加写入结果文件
另外,也可以先分别读取三个文件,将结算结果保存到三个结果变量中(也就是保存在内存中),然后最后一次性的写入到结果文件中。
下面是我自己一直用的框架:
第一句和第二句是加一些限制,让它在语法可能有问题的时候报warning。
第三句是把要读的文件的全文件名(包括后缀)存到@ARGV里面。
第四句是@ARGV作品为main这个subroutine的输入变量。
while的那个循环是把@ARGV里面所有文件的每一行从<>里面读到默认的$_里面(每次读一行),其中<>自动和@ARGV里面的文件的内容发生关系。然后print就是把每次读到的存在$_的那一行打印出来。
use strict;
use warnings;
@ARGV = qw# input_file1.txt input_file2.txt #;
main(@ARGV);
sub main
{
while(<>)
{
print;
}
}
@files=<*.mdcrd>;
foreach $file(@files){
open F, $file or die $!;
while(
do your calculate;
}
}
建一个文件列表,一行一个文件名
一行一行地读文件名,进行操作