tipsやちょっとしたスクリプト

に変換

use strict;

my $levelOffset=0;
my $level = 1;
my @csnum;
$csnum[$level]=0;


my ($l, $t, $s);
my $lv;

while(<>){
    chop;
    y/0/0/;
    y/1/1/;
    y/2/2/;
    y/3/3/;
    y/4/4/;
    y/5/5/;
    y/6/6/;
    y/7/7/;
    y/8/8/;
    y/9/9/;
    y/././;
    y/−/-/;

    if( /^\s*(\d+)(?:\s*[-.]\s*([-\s\d.]+))?\s*\.?\s*(.*)$/){
        ($l, $t, $s)=($1, $2, $3);
        print STDERR "<$l><$t><$s>\n";
        $lv = 1;
        if($t ne ""){
            ++$lv while( $t=~/\d+/g );
        }
        print STDERR "lv=$lv\n";
        if( $lv-$levelOffset == $level){
            $csnum[$level]++;
        }
        elsif( $lv-$levelOffset < $level ){
            $levelOffset =0;
            $level = $lv;
            $csnum[$level]++;
            $#csnum = $level;
        }
        elsif( $lv == $level+1){
            ++$level;
            $csnum[$level]=1;
        }
        else{
            # section too deep
            $levelOffset = $lv-$level-1;
            print STDERR "leveloffset=$levelOffset\n";
            ++$level;
            $csnum[$level]=1;
        }
        
        print "   " x $level;
        print join(".", @csnum[1..$level]);
        print " $s\n";
    }
    else{
        print "$_\n";
    }

}

添付ファイル: filefoo.out 899件 [詳細] filefoo 907件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-22 (月) 01:17:45 (3938d)