ハム関連

CirQダウンロードサイトの作り方とメンテナンス 備忘録

ですから、全ての目次テキストを表示します。

検索の文字があれば、シェルコマンドのgrepを使って検索します。
Grepですから、ヒットした情報は、「ファイル名、行番号」。 これを一時ファイルに保存して、表示させます

検索 実際のソースコードは

sub kensaku{
  my ($kensaku_str) = @_;
  my $kensaku_path = $cirq_path . "*-1.txt";
  my $kekka_path = $cirq_path . "kekka.txt";
  my @mokuji_array;
  
  `grep -rni $kensaku_str $kensaku_path > $kekka_path`;

  open(MOKUJI, "<$kekka_path") || &msg("エラー報告","$kekka_path 読み込み オープンエラー");
  my @mokuji_list = <MOKUJI>;
  close MOKUJI;
  
  foreach my $mokuji_rec(@mokuji_list){
     #CirQ041-1.txt:11:6 地面アンテナの情 のように入っているので
     $mokuji_rec =~ /(.\/pdf\/)(Cirq\d+)(-1.txt:)/i;
     my $mokuji_str = $2 . "<>" . $';
     push(@mokuji_array, $mokuji_str);#CirQ010<>マッチ文字を返す
  }
  return @mokuji_array;
}

全ての目次 ソースコードは

sub kensaku_all{
  my @mokuji_list;

#   全てのテキストファイルを読み込んで表示する
  my @cirq_dir_list=glob($cirq_path . "*-1.txt");
  @cirq_dir_list = sort { $a cmp $b } @cirq_dir_list;

#&msg("デバッグ","@cirq_dir_list");

#globデーターからテキストファイルを次々に読み込む
  foreach my $fn(@cirq_dir_list){
     open(MOKUJI, "<$fn") || &msg("エラー報告","$fn 読み込み オープンエラー");
     my @text_array = <MOKUJI>;
     close MOKUJI;
#CirQ番号
     $fn =~ /(.\/PDF\/)(CirQ\d+)(-1.txt)/i;
     my $cirq_num = $2;   #CirQ番号

     my $cirq_str;  #目次保存用
     foreach my $rec(@text_array){
#スペース文字だけの行は削除
        $rec =~ s/ //g;
        $rec =~ s/ //g;
        $rec =~ s/。//g;
        $rec =~ s/\f//g;
        my $temp=$rec;
        chomp($temp);
        if($temp eq "")   {next;}
#改行は。にする
        $rec =~ s/\n/。/;
        $cirq_str .= $rec;
        } #foreach my $rec(@text_array){
         
     push(@mokuji_list, $cirq_num . "<>" . $cirq_str);
     } #foreach my $fn
     return @mokuji_list;
  }  #sub end

前準備

新たにPDFを登録する場合の手順 備忘録

-------------------------------------------------
#!/usr/bin/perl

#/PDF/内のPDF全てから1ページ目をテキストにする
#これはサーバー上では動かないので、マニュアル操作、コマンド操作でテキスト化する





use strict;
use Jcode;
use CGI;
use DBI;
use File::Basename;


my $cirq_path="./PDF/";

#月刊誌ホルダー中味をBLOGする
my @cirq_dir_list=glob($cirq_path."*.pdf");

#-------------------------------------CIRQ cirq -->CirQに統一する
#foreach my $fn2(@cirq_dir_list){
#   my $re_fn=$fn2;
#   $re_fn =~ s/CIRQ/CirQ/;
#   `mv $fn2 $re_fn`;
#}

@cirq_dir_list = sort { $a cmp $b } @cirq_dir_list;

#Blogして、PDF1ページ目をテキスト化する。
foreach my $fn(@cirq_dir_list){
   `/usr/local/bin/pdftotext -f 1 -l 1 $fn | head`;   #pdftotext 1Page only
   print ("$fn\n");
}
my $ct= @cirq_dir_list;
print("$ct\n");

#テキストの余分な改行(空白行)を削除する
my @text_list=glob($cirq_path."*.txt");
foreach my $fn(@text_list){
   my $fn3=$fn;
   $fn3 =~ s/.txt/-1.txt/;
   `gawk 'NF > 0' $fn > $fn3`;
   print ("$fn\n");
}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-10-31 (火) 09:13:34