作者: dune
日時: 2004/9/05(15:42)
極悪です。

藤岡和夫 さんの [TSperl:464] Re: Perlクックブック第二版 から
>> 内容がどう変わっているかはチェックしてません。初版持ってないし。
>
> オライリーのサイトを見てみると、Perl 5.8対応が売りのようですから、
>買いかもしれませんね。

レシピの数(節のタイトル)を比べると、

D:% perl hoge.pl | egrep "(--|==)" | wc -l
    380

D:% perl hoge.pl | egrep "(\+\+|==)" | wc -l
    303
    
第1版 380 件、第二版 303 件。レシピ数だけを比べると二分冊に
なった第二版のほうが内容が減っている。不思議だ。

以下、++ は第二版で追加されたレシピ、-- は削除されたレシピ、
== は共通のレシピ。

D:% perl hoge.pl | grep "文字"
++ ASCII文字をコード値に(コード値をASCII文字に)変換する
-- Unicode合成文字を1つの文字として扱う
-- Unicode合成文字が含まれている文字列を正規化する
-- Unicodeの名前付き文字を使用する
-- Unicode文字列をオクテット単位で扱う
-- キーボードから1文字を読み取る
-- ネストされている文字列に対してマッチングを行う
++ バイナリファイルから文字列を読み取る
-- バイナリファイルから文字列を読み込む
-- パターンにn番目にマッチする文字列を見つける
++ マルチバイト文字にマッチさせる
== 大文字/小文字の変換
-- 後続行を表す文字を含む行を読み込む
== 文字をエスケープする
++ 文字にマッチさせる
-- 文字にマッチするパターン
== 文字列を1文字ずつ処理する
++ 文字列パターン内で、AND、OR、NOTを表現する
++ 文字列をパースして日付と時刻を取り出す
-- 文字列をファイルとして扱う
++ 文字列中の関数と式を展開する
-- 文字列の先頭または末尾の空白を削除する
++ 文字列の先頭と末尾の空白文字を削除する
-- 文字列内の関数や式を展開する
== 文字列を単語または文字単位で逆順にする
-- 文字列が有効な数値であるかどうかチェックする
++ 文字列が有効な数値を表すかどうかチェックする
-- 文字列を解析して日付と時刻を取得する
-- 文字から数値コードへ変換する
++ 継続文字のある行を読む
++ 部分文字列を取り出す
-- 部分文字列を抽出する

D:%

第1版の Unicode 関連の話は第二版では「マルチバイト文字にマッチ
させる」に集約されたのか、内容が古くなって削除されたのか。



--^hoge.pl
use strict;
use encoding "sjis", STDOUT => "sjis";

sub ext_title{
    local $_ = shift;
    return() unless( ($_) = m/レシピ.+\t+(.+)/g );
    return() if m/プログラム:/;
    my $title = $_;
    s/\p{InHiragana}//g;
    s/\p{Punct}//g;
    return($title,$_);
}

my(%book,%title);

# http://www.oreilly.co.jp/BOOK/pcook/contents.htm
open(FILE,"<:encoding(sjis)","Cook1Index.txt") or die;
while(<FILE>){
    if(my($title,$key) = ext_title($_)){
        $book{$key} |= 0x01;
        $title{$key} = $title;
    }
}
close FILE;

# http://www.oreilly.co.jp/BOOK/perlckbk2v2/contents.shtml
open(FILE,"<:encoding(sjis)","Cook2Index.txt") or die;
while(<FILE>){
    if(my($title,$key) = ext_title($_)){
        $book{$key} |= 0x02;
        $title{$key} = $title;
    }
}
close FILE;

my @prefix = qw/xx -- ++ ==/;
foreach my $key (sort keys %book){
    print "$prefix[$book{$key}] $title{$key}\n";
}
--$
-- 
極悪, FZH01112 at nifty.com
http://hpcgi1.nifty.com/dune/gwiki.pl?