﻿#コメントは行頭の「#」のほか「=pod」と「=cut」で囲むこと（デバッグに便利！）も可能。podの前に空行を入れる！
#基礎設定
use strict;
use warnings;
use utf8;

use Encode qw/encode decode/;

#入力と出力ファイルを開く
my $file1 = 'Liya-shakumon(linknuki).html';
open my $fh1, '<', $file1
  or die "Can't open $file1:$!";
my $file2 = 'Liya-shakumon(linkari).html';
open my $fh2, ">", $file2
  or die "Can't open $file2:$!";
my $logfile = 'log.txt';
open my $lh, '>', $logfile
  or die "Can't open $logfile:$!";

#基礎変数を定義
my $line1 = "";		#入力ファイルを行単位で読み込む
my $number = 0;     #注項目を数える
my @folder;
my @file;
my @komoku1;
my @komoku2;
my @linku1;
my $linku2 = "</a>";
my $line3 = "";

#リンク項目を一つのarray変数に読み込む
my $file3 = 'linkkomoku.txt';
open my $fh3, '<', $file3
or die "Can't open $file3:$!";
while ($line3 = <$fh3>) {
    $line3 =decode('utf8', $line3);
	$line3 =~ s/[\?\r\n\f]//g;
	$line3 =~ s/^\x{FEFF}//;
	if ($line3 =~ /^([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)\t([^\t]+)/) {
		@folder = (@folder,$1);
		@file = (@file,$2);
		@komoku1 = (@komoku1,$3);
		@komoku2 = (@komoku2,$4);
		@linku1 = (@linku1,$5);
		if ($komoku2[$number] eq "-" ){
			$komoku2[$number] = $komoku1[$number];
		}
      }
      else {
  	      print $lh "mismatch for " .  encode('utf8', $line3);
      }
    $number ++;
}
close $fh3;


#入力ファイル（Liya-shakumon.html）を行単位に読み込む
while ($line1 = <$fh1>) {
  #デコードと誤混入字を削除
	$line1 =decode('utf8', $line1);
	$line1 =~ s/[\?\r\n\f]//g;
	$line1 =~ s/^\x{FEFF}//;
  #有字の本文行かどうかを確認
  if (($line1 =~ /^<h\d/)||($line1 =~ /^<p/)){
  	unless ($line1 =~ /<p>　<\/p>/){
    #リンク項目ファイルの構造が正しいかどうかを確認しつつリンク項目を取得
    for (my $i = 0; $i < @komoku1; $i++)  {
      #標題行の場合、リンク項目に半角のスペースを入れる
      if ($line1 =~ /^<h\d/) {
  	      $komoku1[$i] =~ s/(.)/ $1/g;
  	      $komoku2[$i] =~ s/(.)/ $1/g;
  	      $line1 =~ s/($komoku1[$i]|$komoku2[$i])([^a]*<.[^a])/$linku1[$i]$1$linku2$2/g;
  	      $komoku1[$i] =~ s/ //g;
  	      $komoku2[$i] =~ s/ //g;
      }#if
      else {
      	  $line1 =~ s/($komoku1[$i]|$komoku2[$i])([^a]*<.[^a])/$linku1[$i]$1$linku2$2/g;
      }#else
    }#for
    }#unless
  }#if
  print $fh2 encode('utf8', $line1."\n");#出力ファイル（Liya-shakumon02.html）への出力
}#while
close $fh1;
close $fh2;
close $lh