私のルーチンを変更し、最終的な出力ファイルをgzipする必要があります。私はperlサブルーチン内で呼び出される処理されたファイルをgzipする最良の方法は何かを理解しようとしています。perl - gzippedファイルを作成するための最良の方法
たとえば、ファイル(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をしますか?そうする最善の方法は何ですか? 私の新しいファイルは
ありがとうございます。
私のケースでは –
よりずっと簡単には得られませんが、 '@ some_uncompressed_data'とは何でしょうか?それは 'print $ gzip @ final_file'でしょうか? – jdamae
@jdamae - それはあなたが現在 '$ out_fh'に送信しているものです。あなたが今やっているように、 'print $ gzip_fh ...'を何度も呼び出すことができます。 – mob