perl – 创建gzip压缩文件的最佳方法
发布时间:2020-12-16 06:07:56 所属栏目:大数据 来源:网络整理
导读:我需要改变我的例程并使最终的outfile被gzip压缩.我试图弄清楚在perl子例程中调用已处理文件的最佳方法是什么. 例如,我有一个创建文件的子例程(extract_data). 这是主循环和子例程: foreach my $tblist (@tblist){ chomp $tblist; extract_data($dbh,$tblis
我需要改变我的例程并使最终的outfile被gzip压缩.我试图弄清楚在perl子例程中调用已处理文件的最佳方法是什么.
例如,我有一个创建文件的子例程(extract_data). foreach my $tblist (@tblist) { chomp $tblist; extract_data($dbh,$tblist); }; $dbh->disconnect; sub extract_data { my($dbh,$tblist) = @_; my $final_file = "/home/proc/$node-$tblist.dat"; open (my $out_fh,'>',$final_file) or die "cannot create $final_file: $!"; my $sth = $dbh->prepare("..."); $sth->execute(); while (my($uid,$hostnm,$col1,$col2,$col3,$upd,$col5) = $sth->fetchrow_array() ) { print $out_fh "__my_key__^A$uid^Ehost^A$hostnm^Ecol1^A$col1^Ecol2^A$col2^Ecol3^A$col3^Ecol4^A$upd^Ecol5^A$col5^D"; } $sth->finish; close $out_fh or die "Failed to close file: $!"; }; 我是在主要内部还是使用子内容进行gzip?这样做的最佳方法是什么? 谢谢. 解决方法
我知道有一些模块可以在不使用外部程序的情况下完成这项工作,但由于我了解如何使用gzip比我理解如何使用这些模块要好得多,我只是打开一个进程来gzip并调用它一天.
open (my $gzip_fh,"| /bin/gzip -c > $final_file.gz") or die "error starting gzip $!"; ... while (... = $sth->fetchrow_array()) { print $gzip_fh "__my_key__^A$uid^Ehost^A$hostname..."; # uncompressed data } ... close $gzip_fh; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |