●CSVを任意の項目でソート

 
僕はPERL使いです。
PHP嬢も嫌いじゃないけど、やっぱり愛しいのは、何故かPERL君なんです。
 
で、最近、愛しいPERLを使った教材らしきものを何か作れないかな〜と、
思いつつ、便利なSUBプログラム集みたいなのを、
焼酎なんぞ舐めながら、眠れない深夜に製作しています。
 
今回は、その中から、簡単で便利なSUBプログラムを一つ。
 
PERLを少しでも使っている人だったら、簡単に利用できますので。
 
これは「CSVを任意の項目でソート」を目的としています。
例えば、住所録や名簿等を
日時やフリガナでソートしたい時に使ってください。
 
■まずは使い方
 
@SORTED = &CSVsort(\@CSV_LIST,'2');
 
※CSVの配列(リスト)は、リファレンスで渡します。(「\」を前に付ける)
 
※「2」は、CSVの3項目でソートしますよ、という事です。
 項目は、0(ゼロ)から数えます。
 ですので、CSVの4項目でのソートだと、「2」が「3」になります。
 
■簡単な解説
 
※以下のようなCSVがあるとします。
 
※各フィールドは、以下です。
 
通しNO,名前,フリガナ,生年月日,
 
001,田中和男,タナカカズオ,19750102,
002,山田敏子,ヤマダトシコ,19790203,
003,上田太郎,ウエダタロウ,19770304,
004,鈴木義男,スズキヨシオ,19860505,
005,佐藤良子,サトウリョウコ,19820606,
 
これが「@CSV_LIST」に格納されているとします。
 
@CSV_LIST = (
'001,田中和男,タナカカズオ,19750102',
'002,山田敏子,ヤマダトシコ,19790203',
'003,上田太郎,ウエダタロウ,19770304',
'004,鈴木義男,スズキヨシオ,19860505',
'005,佐藤良子,サトウリョウコ,19820606',
);
 
こんな感じで。
 
※ちなみに、逆ソートする時は、
「$tmp[$a] <=> $tmp[$b] or $tmp[$a] cmp $tmp[$b]」の部分の、
「$a」と「$b」を逆にするだけです。
 
■サブ・プログラム
 
sub CSVsort {
 
my (@list,$kou,$type,$DELIMITER);
@list = @{$_[0]};
$kou = $_[1];
$DELIMITER = ',';
 
@tmp = map {(split /$DELIMITER/)[$kou]} @list;
@list = @list[sort {$tmp[$a] <=> $tmp[$b] or $tmp[$a] cmp $tmp[$b]} 0 .. $#tmp];
 
return @list;
 
}
 
 
シンプルなサブ・プログラムです。
ただ、これが結構バカにできません。
 
5000人位のリストでも、問題なくソート出来ますので
もし良かったら使ってください。
 
ただ、5000人(5000レコード)とか超えたら、
やっぱりSQLとか使ってくださいね。
PERLには、DBIという素晴らしいSQL狂いもいますし。
 
■実際に動いている例
http://www.tsunetoshi-tanaka.com/perl_pg/03.cgi
 
 
 
PS.
何回も紹介していますが、これは、ホントお薦めの教材です。
ずっとロングセラーを記録しています。
 
▼▼▼
田中洋平さんの「動画でわかるDVDパソコン教室」
 
日本で発売されているソフトのほとんどが網羅されています。
 
今、収監中の堀江貴文さんが推薦しているから、ちょっと?
と思う人もいるかもしれないけれど。
 
高額なパソコン教室に通うなんてもったいない。
iPhone用のデータも付いてくるので、
これがあれば、いつでもどこでも学べます。
 
今、少しだけど、値下げされていますよ。
 
 
 

facebookへ twitterへ

 
 
FX比較ランキング  

動画パソコン教室
SEOマニュアル

 
TOPに戻る
オススメの教材

▼最近の記事です。

TOPに戻る

▼このHPに連動した、メルマガも発行させてもらっています。もし気分が乗ったら、登録してもらえれば嬉しいです。

メルマガ購読・解除
【超初心者】からのインターネット講座
   
バックナンバー
powered by まぐまぐトップページへ

田中の初心者向けアフィリエイト講座へ

レスポンシブ・デザインに対応したHTMLデザインテンプレート

リンク集