内容

目的

長い間日記を更新していないと、

1月6日(日)の日記。

後日更新。 


1月7日(月)の日記。

後日更新。

のようなものを大量に作成する必要が出てくる。
それを作るツール。
本当は日記ちゃんと更新すれば必要ないんですがね。。

そういえば、Perlで初めてサブルーチン使ったのもこのツールだったなぁ。

出力イメージ

こんな感じの出力になります。
初版の出力

2008年10月13日版の出力

あとはこれをブログに貼り付けていく作業が必要になるのだけど、、まあここまで自動でできるだけでも大分いいかと。。
あれ、ブラウザの機能によりhtmlとして解釈されてしまっている。そりゃそうか。
でも<body>とかかいていないのになぁ。さすがの親切機能、ブラウザ。SIPにもこのくらいの柔軟性(ry
2008年10月13日版の実際の出力イメージ(テキストイメージは以下)

<p>9月1日(月)の日記。</p>

<p>後日更新。<br>この日の<a href="http://hinata.la.coocan.jp/pukiwiki/?%A5%E1%A5%E2%A5%E1%A5%E2%2F2008-09-01" target="blank">メモ</a>。</p> 


<p>9月2日(火)の日記。</p>

<p>後日更新。<br>この日の<a href="http://hinata.la.coocan.jp/pukiwiki/?%A5%E1%A5%E2%A5%E1%A5%E2%2F2008-09-02" target="blank">メモ</a>。</p>

ソース

#
# 後日更新文作成ツール
#
$memo_addr="http://hinata.la.coocan.jp/pukiwiki/?%A5%E1%A5%E2%A5%E1%A5%E2%2F";
 
$nen=$ARGV[0];

#2000年は土曜日から始まる
$youbi_cnt=5;

#その年が何曜日から始まるか
sub start_youbi{
    my $cnt=2000;
    for($cnt =2000 ; $cnt < $nen ; $cnt++){
        $youbi_cnt++;
        if ($cnt % 4 == 0){
            $youbi_cnt++;
        }
    }
}

sub youbi_print{
    if ($_[0]%7==0) {print FW "月";}
    if ($_[0]%7==1) {print FW "火";}
    if ($_[0]%7==2) {print FW "水";}
    if ($_[0]%7==3) {print FW "木";}
    if ($_[0]%7==4) {print FW "金";}
    if ($_[0]%7==5) {print FW "土";}
    if ($_[0]%7==6) {print FW "日";}    
}

sub monthroop{
    my $day=0;
    my $day2="0";
    my $month="0";
    if ($_[0] < 10 ){$month="0" . $_[0];}else{$month=$_[0];}
    mkdir $nen, 0777 ;
    open(FW,">./$nen/${nen}_$month.txt");
    for ( $day = $_[1] ; $day <= $_[2] ; $day++ ){
        print FW "<p>" . $_[0] . "月" . $day . "日(";
        &youbi_print("$youbi_cnt");
        print FW ")の日記。</p>\n\n";
        print FW "<p>後日更新。<br>この日の";
        if ($day < 10 ){$day2="0" . $day;}else{$day2=$day;}
        print FW "<a href=\"$memo_addr$nen\-$month\-$day2\" target=\"blank\">メモ</a>。";
        print FW "</p>\n\n\n";
        $youbi_cnt++;
    }
    close(FW);
}

sub yearprint {
    my $feb_day=0;
    if ($nen % 4 ==0 ){$feb_day=29;}else{$feb_day=28;}
    #&monthroop("月","開始日","終了日",);
    &monthroop("1","1","31");
    &monthroop("2","1","$feb_day");
    &monthroop("3","1","31");
    &monthroop("4","1","30");
    &monthroop("5","1","31");
    &monthroop("6","1","30");
    &monthroop("7","1","31");
    &monthroop("8","1","31");
    &monthroop("9","1","30");
    &monthroop("10","1","31");
    &monthroop("11","1","30");
    &monthroop("12","1","31");
}
&start_youbi();
&yearprint();

更新履歴

2008年10月5日(日)

サブ関数であるmonthroopの最後に出力ON,OFFフラグを追加した。
これにより出力したい月のみ出力できるようになった。
(出力しない月は、曜日のカウントアップに使用している。)

2008年10月13日(月祝)

近頃日記からWikiのメモメモにリンクするようにしているので、日にちごとのメモメモへのリンクのhtmlイメージも自動で作るように変更した。

2009年1月3日(土)

年を引数として指定するとその年の分をすべて月ごとに出力するように変更した。

C:\Documents and Settings\日向充\My Documents\08.Perl\日記\2009

のようなディレクトリに

2009_01.txt
2009_02.txt
2009_03.txt
2009_04.txt
2009_05.txt
2009_06.txt
2009_07.txt
2009_08.txt
2009_09.txt
2009_10.txt
2009_11.txt
2009_12.txt

のようなファイルを自動生成するようにした。
テキストの中身は2008年10月13日バージョンと同じ。
その年が何曜日からスタートするかも年から自動計算するようにした。
2008年10月5日に追加した
>サブ関数であるmonthroopの最後に出力ON,OFFフラグを追加した。
は削除した。





*1 ( http://www.findtheneedle.co.uk/company-postcode.asp?postcode=K1G&code=viagra canadian pharmacy 8

添付ファイル: file日記_20090103.pl.txt 75件 [詳細] file日記_20081013.pl.txt 89件 [詳細] file2008_9_10_2.txt 97件 [詳細] file2008_1〜3.txt 142件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-18 (火) 19:41:17 (2539d)