#!/usr/bin/perl # StructuredText形式からCSV形式に変換 # $line = 0; while(<>) { chomp; chomp; s/\s+$//; # StructurTextの要素分解 ($key, $val) = (split(/:\s*/, $_, 2)); if ($key =~ m/^[\w\-]+$/) { #カンマを含む行のクオーティング if ($val =~ m/,/) { $val = sprintf("\"%s\"", $val); } # 出現位置への格納 if (defined($key2Num{$key})) { $csvList[$key2Num{$key}] = $val; } # 項目名出現順の記録 else { push(@keyList, $key); push(@csvList, $val); $key2Num{$key} = scalar(@keyList) - 1; } } # 空行位置でのCSV出力 elsif ($key eq '') { if ($line == 0) { printf(" %s\n", join(',', @keyList)); } if (scalar(@csvList)>0) { printf("%s\n", join(',', @csvList)); @csvList = (); $line++; } } }