この日記へのリンクは
http://fulufuru.hauN.org/nikki.pl/yyyy/mm/dd.html#xx
「yyyy/mm/dd」は年月日、「x」は段落で張るのが吉。
[#01] 結局、AL-N4のBIOSは、8G以上不可。ということらしく、おそらく大丈夫であろうS21を持つけんとさんに売られていくことになった。くぅ、ま、死んだと思っていた、N4につけていた3.2GのHDDが生きていたので、HDDは、買わないことにしよう。謎計画は、なぜか、Panasonic製品になるらしいし……(謎)
[#02] 朝、なんだか、人がいない。そんな感じで、ゴンゴンかかってくる電話。あひー。
[#03] む?MICANの取得データのキャッシュが変だ。昨日の夜中に変更した部分が変だよ。くちょ。というか、追加して、変更して、一部コメントアウトしたつもりが、必要以上にコメントアウトしたらしい……汗。ま、見た目に問題ないから、いいけど……汗。
[#04] そういえば、MICANは、もともと、内部的にはGMT時刻で処理してますけれども……
[#06] お客さんのところで、トラブル。缶詰中。こまったな。終電は、中野発2350。2330までに会社を出れない場合は、帰れない決定……(笑)。しかも、携帯電話忘れたから、このあたりの基地の電話番号わかりません……汗。そんなおいらに励ましのメールを……(笑)。
[#07] ん?問題ないらしい。原因については、あっちの人とこっちの人に究明してもらうとして、帰るぞぉ。
[#08] んと、区切り文字は本質ではないので、どんなソートのときでも区切り文字とは関係ないです。せっかくなので、例。
#!/usr/local/bin/perl
# LIRS FIELD
($M_TIME ,$D_TIME ,$TIMEZONE ,$LENGTH ,$URL ,$TITLE ,$AUTHOR) = (0..6);
# RECORDS
$FILE = <<LIRS__DATA;
938779260
938781002
+32400
49383
http://aniki.hauN.org/d/
INGO NIKKI
hiya
938779258
938780958
+32400
39383
http://test/
test-title
test-auther
938779262
938781000
+32400
59383
http://fulufuru.hauN.org/
fulufuru diary
fulufuru
LIRS__DATA
$FILE_COMMA = <<LIRS__DATA;
938779260,938781002,+32400,49383,http://aniki/d/,INGO NIKKI,hiya
938779258,938780958,+32400,39383,http://test/,test-title,test-auther
938779262,938781000,+32400,59383,http://fulufuru/,fulufuru diary,fulufuru
LIRS__DATA
# FIELD SEPARATOR
$FS="\n"; # if FILE
#$FS=",";# if FILE_COMMA
# RECORD SEPARATOR
$RS="\n\n"; # if FILE
#$RS="\n";# if FILE_COMMA
# FS is commma or return.
@records = split(/$RS/,$FILE);# if FILE
#@records = split(/$RS/,$FILE_COMMA);# if FILE_COMMA
# DELETE NULL record
@records = grep !/^$/, @records;
print "\n============\nSort by M_TIME\n============\n";
@sorted = &lirs_sort($M_TIME,\@records);
print join("\n---\n",@sorted);
print "\n============\nSort by D_TIME\n============\n";
@sorted = &lirs_sort($D_TIME,\@records);
print join("\n---\n",@sorted);
print "\n============\nSort by URL\n============\n";
@sorted = &lirs_sort($URL,\@records);
print join("\n---\n",@sorted);
print "\n============\nSort by LENGTH\n============\n";
@sorted = &lirs_sort($LENGTH,\@records);
print join("\n---\n",@sorted);
print "\n============\nSort by normal sort\n============\n";
@sorted = sort @records;
print join("\n---\n",@sorted);
print "\n============";
exit;
sub lirs_sort{
my $field = shift ;
my $lirs = shift ;
map { $_->[0]}
sort { $a->[$field+1] <=> $b->[$field+1]
|| $a->[$field+1] cmp $b->[$field+1] }
map { my @t=( $_, split(/$FS/,$_) ); \@t } @{$lirs};
}
$RS,$FSを変化させても、同じlirs_sortの関数や、標準のsortで同じようにソートできていることに注目していただければいいです。ちなみに、lirs_sortの中身については、Perlプログラミング中・上級編(jus勉強会 1999年9月25日)のSchwartzian Transformのページなどを見てください。
[#09] いや、単に、このまえのjusの勉強会で聞いたことを使えるチャンスだから、作ってみた。という話だったりするんだけど……(汗;;
[#10] ちうわけで、自分のプログラムにも、このルーチンいれてあげよう。っと。