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

藤岡和夫 さんの [TSperl:468] Re: Perlクックブック第二版 から
>終わりを書き直して件数の部分だけを抜き出すと、
>
>第1版: 334件
>第2版: 414件
>同一タイトル数: 94件
>減少タイトル数: 240件
>増加タイトル数: 320件

そですね。

dune さんの [TSperl:465] Re: Perlクックブック第二版 から
>第1版 380 件、第二版 303 件。レシピ数だけを比べると二分冊に
>なった第二版のほうが内容が減っている。不思議だ。

↑は、第一版と第二版のデータが逆でした。直して同じ体裁で出力
するとこんなかんじ。

D:% perl hoge.pl
第1版:333 件
第2版:413 件
同一タイトル数:112 件
減少タイトル数:221 件
増加タイトル数:301 件

D:%

数値が違うのは翻訳の揺れを除こうとして、s/\p{InHiragana}//g;
とかやってるためで、それをコメントアウトすると、

D:% perl hoge.pl
第1版:334 件
第2版:414 件
同一タイトル数:94 件
減少タイトル数:240 件
増加タイトル数:320 件

D:%

一致しました。



use strict;
use encoding "sjis", STDOUT => "sjis";

sub ext_title{
    local $_ = shift;
    return() unless( ($_) = m/(?:レシピ|プログラム).+\t+(.+)/g );
    my $title = $_;
    if(1){
        #「CPANモジュールのビルドとインストール」と
        #「CPANモジュールをビルドおよびインストールする」を同一視
        s/\p{InHiragana}//g;
        s/\p{Punct}//g;
    }
    return($title,$_);
}

my(%book,%title);

open(FILE,"<:encoding(sjis)","Cook1Index.txt") or die;
while(<FILE>){
    if(my($title,$shorten_title) = ext_title($_)){
        $book{$shorten_title} |= 0x01;
        $title{$shorten_title} = $title;
    }
}
close FILE;

open(FILE,"<:encoding(sjis)","Cook2Index.txt") or die;
while(<FILE>){
    if(my($title,$shorten_title) = ext_title($_)){
        $book{$shorten_title} |= 0x02;
        $title{$shorten_title} = $title;
    }
}
close FILE;

my @prefix = qw/xx -- ++ ==/;
my @count;
foreach my $shorten_title (sort keys %book){
#   print "$prefix[$book{$shorten_title}] $title{$shorten_title}\n";
    ++$count[$book{$shorten_title}];
}

print <<"__AOUT__";
第1版:@{[ $count[1]+$count[3] ]} 件
第2版:@{[ $count[2]+$count[3] ]} 件
同一タイトル数:@{[ $count[3] ]} 件
減少タイトル数:@{[ $count[1] ]} 件
増加タイトル数:@{[ $count[2] ]} 件
__AOUT__
-- 
極悪, FZH01112 at nifty.com
http://hpcgi1.nifty.com/dune/gwiki.pl?