refirio.org
気ままな雑記帳&実験場。好き勝手に色々やっています。
エントリー
タグ「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.conf
に AddHandler
などの設定を追加する。
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.conf
に AddHandler
などの設定を追加する。
青空文庫のテキストデータからルビを削除
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
ユーティリティ
カテゴリー
タグクラウド
- 33分探偵1
- AMBITIOUS JAPAN!1
- ARIA2
- Air2
- Android2
- BLACK CAT2
- C#1
- Chrome2
- FINAL FANTASY2
- Flash2
- GAE1
- JavaScript18
- Kindle1
- Mac2
- MySQL7
- PHP68
- PayPal1
- Perl3
- PostgreSQL2
- Python1
- Ruby1
- SQLite6
- Switch1
- TinyMCE4
- Windows Media Player1
- bot1
- fragile1
- freo53
- iPhone3
- iTunes1
- levis1
- mod_rewrite2
- node.js1
- sola1
- true tears1
- いつかのメリークリスマス1
- いつか帰るところ1
- けいおん!1
- ここにしか咲かない花3
- とある魔術の禁書目録1
- とらドラ!2
- ひぐらしのなく頃に2
- みなみけ1
- イラスト4
- ガンダム003
- クロノトリガー1
- ザナルカンドにて4
- テラ1
- ニコニコ動画8
- ハゲタカ2
- ピアノ36
- マクロスF3
- ユニットテスト1
- ルパン三世1
- ローズ・オブ・メイ4
- 初音ミク1
- 半分の月がのぼる空1
- 名探偵コナン1
- 戦場のメリークリスマス5
- 携帯10
- 攻殻機動隊1
- 桜2
- 機工魔術士1
- 決行~姫をさがして~1
- 涼宮ハルヒの憂鬱10
- 深愛2
- 灼眼のシャナ4
- 聖剣伝説2
- 蕾3
- 蟲師2
- 返信2
- 野球1
- 鋼の錬金術師1