Perl で改行やカンマを含むデータをCSVファイルに書き出す方法

サンプルコード

#カンマや改行を含むフィールドをクオートする関数
sub escape4txt{
    my $str = shift;
    defined $str or return '';
    return $str unless ($str =~ /[,"\r\n\t]/);
    $str =~ s/"/""/g;
    $str =~ s/\r\n/\n/g;
    return "\"$str\"";
}

#書き出しファイルを開く
open (CSV, ">myfile.csv") or die "Can't open myfile.csv: $!\n";

#改行コードを調整
binmode (CSV);

#値の書き出し(1行)
foreach (@myvalue){
    print CSV &escape4txt($_),',';
}

#レコード区切の書き出し
print CSV "\r\n";

#ファイルを閉じる
close (CSV) or die "Can't close(flush) myfile.csv: $!\n";