[[tipsやちょっとしたスクリプト]]
 #ref(foo)
 を
 #ref(foo.out)
 に変換
 
  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/−/-/;
      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*(.*)$/){
         ($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";
     }
      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";
      }
  
  }

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS