複数行からなるデータを一つのレコードとしてまとめる
(要素数が可変の場合)
住所:東京都世田谷区
性別:男
年齢:35
ペット:なし
住所:東京都渋谷区
性別:女
年齢:29
ペット:あり
種類:犬
住所:東京都目黒区
性別:男
年齢:42
ペット:あり
種類:カメ
:
:
:
のように、必須回答項目と任意項目の両方があるデータ(
この場合、ペットを飼っている人のみペットの種類を答える)
が集められることもあります。
このようなデータを
東京都世田谷区,男,35,なし
東京都渋谷区,女,29,あり,犬
東京都目黒区,男,42あり,カメ
:
のように連結し、perlや表計算ソフトで処理しやすいようにする
のがこのプログラムの目的です。
$juusho ="";
$seibetsu = "";
$nenrei = 0;
$pet = "";
$shurui = "";
while(<>) {
s/[\r\n]//g;
@field = split( /:/, $_ );
if ( $field[0] eq "住所" ) {
$juusho = $field[1];
}
if ( $field[0] eq "性別" ) {
$seibetsu = $field[1];
}
if ( $field[0] eq "年齢" ) {
$nenrei = $field[1];
}
if ( $field[0] eq "ペット" ) {
$pet = $field[1];
}
if ( $field[0] eq "種類" ) {
$shurui = $field[1];
}
if ( $_ eq "" ) {
if ( $pet eq "なし" ) {
printf( "%s,%s.%s,%s\n", $juusho, $seibetsu,
$nenrei, $pet );
}
else {
printf( "%s,%s.%s,%s,%s\n", $juusho, $seibetsu,
$nenrei, $pet, $shurui );
}
}
}
exit;
というファイルが dat6.txt として存在するとします。住所:東京都世田谷区 性別:男 年齢:35 ペット:なし 住所:東京都渋谷区 性別:女 年齢:29 ペット:あり 種類:犬 住所:東京都目黒区 性別:男 年齢:42 ペット:あり 種類:カメ
とタイプします。c:\perl> perl ren2.pl dat6.txt
と出力されるはずです。東京都世田谷区,男,35,なし 東京都渋谷区,女,29,あり,犬 東京都目黒区,男,42,あり,カメ
Copyright © 2004 TKEN