30分プログラムリスト
30分プログラム、その178。id:20070529:flistに機能追加。
はてブのブックマーク数を表示するようにした。
使い方
$ perl croquis_list.pl ~/c/docs/hatena/*.txt *list*[30分プログラム]30分プログラムリスト **Perl - [http://d.hatena.ne.jp/mzp/20070416/rpn:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070416/rpn"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070416/rpn" /></a> - [http://d.hatena.ne.jp/mzp/20070419/fortune:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070419/fortune"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070419/fortune" /></a> - [http://d.hatena.ne.jp/mzp/20070425/lcs:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070425/lcs"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070425/lcs" /></a> - [http://d.hatena.ne.jp/mzp/20070429/cgi:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070429/cgi"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070429/cgi" /></a> - [http://d.hatena.ne.jp/mzp/20070503/oop:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070503/oop"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070503/oop" /></a> - [http://d.hatena.ne.jp/mzp/20070507/busybox:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070507/busybox"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070507/busybox" /></a> - [http://d.hatena.ne.jp/mzp/20070511/db:title] <a href="http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/mzp/20070511/db"><img src="http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/mzp/20070511/db" /></a>
手で書ける限界をあっさり越えている気がする。
ソースコード
#!/usr/bin/env perl use strict; use warnings; use utf8; use Encode; print "\n"; print encode("UTF-8","*list*[30分プログラム]30分プログラムリスト\n"); my @titles = map { open(FILE,$_); /(\d{4})-(\d{2})-(\d{2})\.txt$/ or die "filename is invalid"; my $date = "$1$2$3"; my @titles = grep {/\*.*\[30/ } <FILE>; close(FILE); map { [$date ,$_] } @titles; } @ARGV; for my $lang (qw(Perl Python Ruby Scheme Haskell Javascript OCaml)){ print "**$lang\n"; for (grep { $_->[1] =~ /$lang/i} @titles){ if($_->[1] =~ /^\*(\w+)\*/){ my $url = "http://d.hatena.ne.jp/mzp/$_->[0]/$1"; # はてなブックマークへのリンクを貼る my $entry = "http://b.hatena.ne.jp/entry/$url"; my $img = "http://b.hatena.ne.jp/entry/image/$url"; my $bookmark = qq(<a href="$entry"><img src="$img" /></a>); print "- [$url:title] $bookmark\n" } } }