您的位置:首页 > 其它

将输入文件按域分割的程序

2011-09-16 16:38 211 查看
use strict;
use warnings;
use FileHandle;

#计算字符串的hash值
sub HashFun($){
my $str = shift;
my $sum=0;
for(my $iLetter = 0; $iLetter < length($str); $iLetter ++){
$sum += ord(substr($str, $iLetter, 1));
}
return $sum;
}

#分割文件的函数,带三个参数:输入文件,输出文件夹,分割的份数
sub SplitFile($$){
my $inputfile=shift;
my $outputfolder=shift;
my $nParts=shift;

unless(open IN_FILE, "<$inputfile"){
print "Could not open $inputfile!\n";
return 1;
}

my %fhHash; #用一个hash表保存文件句柄
#打开文件句柄
for(0 .. $nParts - 1){
my $fillzero = ( 0 x (2 - length($_)));
my $filename = "${outputfolder}/${fillzero}" . $_;
print "$filename\n";
open $fhHash{$_}, "+>$filename" or die;
}
my $line;
while($line = <IN_FILE>){
my $str = substr($line, 0, 5);
my $id = HashFun($str) % $nParts;
$fhHash{$id}->print("$line");
}
close(IN_FILE);
#关闭文件句柄
for(0..$nParts){
close $fhHash{$_};
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐