極悪です。
藤岡和夫 さんの [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?