ファイル分割のサンプルスクリプト

Perl初心者のためのPerlノートです!

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo

◆ はじめに

本ページは、私がPerlを習得した時(いや習得中)のノートです。

ごく普通の言語(COBOL,C,Java,VB等)を知っている人が、Perlをやり始めるといろいろと悩むことがあります。

それは、

です。

本ページは、そのようなハードルを一つ一つクリアにしていけたらと思います。

そして、本ページが何かのお役に立てれば幸いです。では、ごゆっくりご覧ください。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

◆ サイト最新情報

◆ コンテンツ

2008-02-09 ファイル分割のサンプルスクリプト

たとえば、記事数が多くなり、サイズが大きくなったhtmlファイルがあったとします。

これを記事毎のhtmlファイルに分割したい場合、以下のサンプルが参考になると思います。


このサンプルは、perlnote.htmファイル内でのh4要素からつぎのh4要素の前までの行データ(記事データ)を各々のファイルへ出力します。

つまり、h4要素単位に分割された内容のファイルがh4要素の数分作成されるわけです。


ファイル名は、「perlnote」プラス「該当h4要素のid」プラス「.htm」とします。

また、分割ファイルにはヘッダーとフッターを付加します。


尚、ヘッダーとフッターのファイルは予め用意します。

しかし、ヘッダーのtitle要素とh1要素には、該当h4要素の内容を実行時にコピーします。


サンプルソース
use strict;
# 宣言
my ($fileheadx, $fnm, $xx, $wk, $fileheader,$filefooter);

# ファイル読み込みデリミタをなしにする(ファイル全体読み込みモードにする)
$wk = $/;
$/ = undef;

# HTMLファイルヘッダー保存
open(FH, "h_perlnote.htm") || die "open err", "(h_perlnote.htm)";
$fileheader = <FH>;
close(FH);

# HTMLファイルフッター保存
open(FH, "f_perlnote.htm") || die "open err", "(f_perlnote.htm)";
$filefooter = <FH>;
close(FH);

#ファイル読み込みデリミタを普通(行単位)にする。
$/ = $wk;

open (IN, "perlnote.htm") || die "open err", "(perlnote.htm)";
open (OUT, ">dmy.tmp") || die "open err", "(dmy.tmp)";
while ($xx = <IN>) {
    if ($xx =~ /<h4 id="(.*?)"/) {
        print OUT $filefooter, "\n";
        close OUT;
        $fnm = "perlnote" . $1 . ".htm" , "\n"; # ファイル名作成
        $xx =~ /<h4.*>(.*)<\/h4>/i;
        $wk = $1;
        $fileheadx = $fileheader;
        # title要素とh1要素には、該当h4要素の内容をコピーする。
        $fileheadx =~ s/<title.*<\/title>/<title>$wk<\/title>/i; 
        $fileheadx =~ s/<h1.*<\/h1>/<h1>$wk<\/h1>/i;
        open (OUT, ">$fnm") || die "open err", "($fnm)";
        print OUT $fileheadx, "\n";
    }
    print OUT $xx;
}
print OUT $filefooter, "\n";
close OUT;
close IN;

◆ おすすめ Perl本

■ 続・初めてのPerl 改訂版

『初めてのPerl』の次ぎに読むと吉です。

結構いいですが・・・、初心者にはちょっと難しいかもです。

■ 結城浩のPerlクイズ

この本には、ちゃいちゃんパパの小話しが載っています(謎)。

ある程度、Perlを理解している人には、たまらない内容になっています。さすが結城先生だな!

結城浩のPerlクイズ

■ 新版Perl言語プログラミングレッスン入門編

実は、私はまだ読んでいませんが、結城先生の本なので良くないはずがありません。

新版Perl言語プログラミングレッスン入門編

■ CGI&Perlポケットリファレンス (Pocket reference)

この本は、非常に役に立ちます。ちょっと調べるのに最適です。サンプルも説明も的を射ています。

CGI&Perlポケットリファレンス (Pocket reference)

■ Perlベストプラクティス

一読の価値有りだと思います。

Perlベストプラクティス

■ プログラミングPerl〈VOLUME1〉

ご存知、Perl本の聖書、ラクダ本(上)です。

■ プログラミングPerl〈VOLUME2〉

ご存知、Perl本の聖書、ラクダ本(下)です。

◆ おわりに

最後に、本ページが、何かのお役に立てれば幸いです。

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくPerlノート掲示板へご指摘ください。

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ WEBリーダー/ 燈明日記/ yahoo