エントリー

タグ「Perl」の検索結果は以下のとおりです。

Perlで特定フォルダ内の全文検索

Windows7でファイル内の文字列を検索したかったのですが、インデックスを作成してみたりフォルダオプションで「ファイル名と内容を常に検索する」に設定してみたりしても、何故か全文検索になってくれませんでした。

専用の検索ツールをインストール…とも思ったけど、後々使えるかもしれないので全文検索ツールをPerlで書いてみた。

##################################################
#ファイル内検索プログラム
##################################################

use strict;

print '検索ワード:';

my $input = <STDIN>;

chop($input);

&search('./', $input);

<STDIN>;
exit;

### 全文検索
sub search {
  my($dir, $word) = @_;

  opendir(DIR, $dir);
  my @dir = sort { $a cmp $b } readdir(DIR);
  closedir(DIR);

  foreach my $file (@dir) {
    if ($file eq '.' or $file eq '..') {
      next;
    }

    my $target = "$dir$file";

    if (-d $target) {
      &search("$target/", $word);
    } else {
      my $flag = 0;

      open(FH, $target);
      while (my $line = <FH>) {
        if (index(lc($line), lc($word)) >= 0) {
          $flag = 1;
        }
      }
      close(FH);

      if ($flag) {
        print $target . "\n";
      }
    }
  }

  return;
}

search.pl とかの名前でファイルを作成して、上の内容を書いておきます。あとはダブルクリックで実行すれば、検索文字を入力できる画面になるので、文字を入力してエンターキーを押します。検索対象は、search.pl を置いたフォルダ内全てです。(PerlがインストールされたWindowsを想定。)

エラー処理が無かったり、文字コードの異なるファイルの検索を想定していなかったり…と色々問題はありますが、ちょろっと検索するくらいなら十分でした。

ただ、EmEditorがインストールされた環境なら「フォルダを右クリック → EmEditorでファイルから検索」を実行すれば全文検索ができると教えてもらったので、実は専用ソフトをインストールする必要も検索ツールを作る必要も無かったという…。_(。゚⊿ 」∠)_

XAMPPでPerlを動作させるメモ

Perl+CGIの実行に何かと手間取ったのでメモ。

XAMPPのインストール手順

Windows版でPerlを動作させる

XAMPP付属のPerlを使うと何かと面倒でPerlのパスも長いので、別途ActiviePerlを C:\usr\local にインストール。(ごく普通にインストールすればOK。)

Perlのパスは #!/usr/local/bin/perl で動く。

ユーザーディレクトリを使う場合、C:\xampp\apache\conf\extra\httpd-userdir.confAddHandler などの設定を追加する。

Mac版でPerlを動作させる

Perlのパスは #!/Applications/XAMPP/xamppfiles/bin/perl#!/usr/bin/perl で動く。後者は、MacにもともとインストールされているPerl。

ターミナルに perl -e 'print "Hello, world!\n"' と入力して実行すれば、CGIではないPerlの動作確認ができる。

改行コードを「LF(UNIX)」にしておく。

ターミナルから chmod 755 xxx.cgi のようにして、プログラムに実行権限を与える。ファイルの読み書きなどを行うなら、同様に権限を設定する。

ユーザーディレクトリを使う場合、/Applications/XAMPP/xamppfiles/etc/extra/httpd-userdir.confAddHandler などの設定を追加する。

青空文庫のテキストデータからルビを削除

freoアルファ版の小説管理サンプルとして、青空文庫の小説を使用する予定。青空文庫では、著作権切れの文学作品を読むことができます。

ただ、「できればルビなしのデータがほしいなぁ…。」と思ったのですが、配布されているのはルビありのデータのみのようです。

そんな訳で、テキスト形式で配布されているデータから、ルビを削除するプログラムをPerl(CGIではない)で書いてみた。

my $org_file = 'org.txt';
my $new_file = 'new.txt';

my $new = '';

if (open(FH, $org_file)) {
  while ($data = <FH>) {
    $data =~ s/《[^》]+》//g;
    $data =~ s/|//g;
    $data =~ s/(\r|\n)//g;
    $new .= $data . "\n\n";
  }
  close(FH);
}

if (open(FH, '>' . $new_file)) {
  print FH $new;
  close(FH);
}

exit;

ルビを削除するついでに各行の最後に改行を1つ追加していますが、TinyMCEに貼り付けたとき、段落として認識してもらうためです。

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

カテゴリー

検索

エントリー検索フォーム
キーワード

過去ログ

過去ログ表示フォーム
キーワード

Feed