定年退職者の目

毎日見るものや出会いの中で,ほめたり改善案を提示したりして,読者と共感したい

perlの活用(データの記録)

2024-01-15 13:01:46 | ネットワークトラブル
上段:カテゴリ 中段:投稿日 下段:サブテーマ ブログナンバー:172  
     ネットワークトラブル (18)
01月15日(月)
配列の並べ替えからテーブルの並べ替えに
 連想配列のsortの方法はWebの各講座の中で説明されている。しかし実用ではExcelのようにテーブルの行単位にsortしなければならない。私は以下のような死亡データを新聞記事などから収集して毎日記録しているが、新聞記事だから日付が前後することがある。これを日付順に並べ替えるにはどうするか。その方法をここに記しておく。
  データファイル'file.dat'に以下の書式で記録されているとする。
1.30,山田芳雄,山田書店会長,老衰,自宅,妻,88
1.28,鈴木和夫,元K社社長,腎細胞がん,病院,妻,80
2.1,田中俊夫,被災者の会所属,肺炎,病院,妻,83
2.10,丸山まるお,小説家,大腸がん,病院,長男,77
2.8,トムアトム,歌手,膀胱がん,自宅,不明,84

 perlスクリプトはデータの読み込みから始まる。
#---------------------------------

open(IN,"<./file.dat");
@www = ;
close (IN);
foreach $key(@www){
@w1=split(',',$key);#項目を配列に入れる
@w2=split('\.',$w1[0]);#日付を月と日に分ける
#日付を元日からの経過日数に変える
$w3=($w2[0]-1)*31+$w2[1];
$w4{$key}=$w3;#-----------①  次に説明
}

# 連想配列を数値(value)で昇順に並べ替える
@w5=sort{$w4{$a}<=>$w4{$b}} keys %w4;
#------------------------------------------

   ①の説明
連想配列%w4は次のように作成される
%w4=('1.30,山田芳雄,山田書店会長,老衰,自宅,妻,88'=>61,
'1.28,鈴木和夫,元K社社長,腎細胞がん,病院,妻,80'=>59,
'2.1,田中俊夫,被災者の会所属,肺炎,病院,妻,83'=>63,
'2.10,丸山まるお,小説家,大腸がん,病院,長男,77'=>72,
'2.8,トムアトム,歌手,膀胱がん,自宅,不明,84'=>70);

これを受けて,%w4をvalue の大きさで昇順に並べ変えると
keyがvalueと一緒に並べ変わる。

この後は配列@w5がkeyの集合になっているからそのままkey
を表示すれば日付順に次のように並んでいる。

1.28,鈴木和夫,元K社社長,腎細胞がん,病院,妻,80
1.30,山田芳雄,山田書店会長,老衰,自宅,妻,88
2.1,田中俊夫,被災者の会所属,肺炎,病院,妻,83
2.8,トムアトム,歌手,膀胱がん,自宅,不明,84
2.10,丸山まるお,小説家,大腸がん,病院,長男,77

昔取った杵柄perlを活用して,現在(2023年05月)は,

                         サッカーチーム   FC岐阜

をより深く知るための動画ならぬ動具を作って楽しんでます。

公開ページは,http://cs-gifu.que.jp/  だ。一度訪ねてくれ。
                   コンテンツ作成同好会ホームページ

 



最新の画像もっと見る

コメントを投稿