Archive for 'Perl'

なんだか色々とやることがある。携帯のサイトを作成するにはHTML,Perl,PHP,データベースなどを学ばないといけない。その全部が分からないし今までやってきたことがどれだけ役に立つのかどうかも分からない。今はデータベースのMySQLの勉強中。セキュリティ周りにもやっとかないといけないし。さっきリンクのアクセスキーを覚えた。PCのブラウザでもこの機能使おうと思ったら使えるんだね。知らなかった。というか知る必要もなかった。

Twitterボットを作るに当たって、何を喋らせるかの辞書ファイルを作る必要があった。で、朝8時、9時から2時間おき、夜11時に喋るように設定してた。朝晩の分は個別の辞書なので他とかぶらないからいいとして、9時からの2時間おきの分は一つの辞書としてその中からランダムでもいいんだけれども、一つ問題がある。Twitterは同じ発言は24時間出来ないということ。ということはそんなことをしたらワーストケースとして朝晩と9時しか喋らないということもありえる。さすがにそれは避けたい。なので時間別で辞書ファイルを作って内容がかぶらないようにした。しかしながら分布にばらつきがあったり、喋る内容がかぶってないかどうか視認するのは別のファイルだと面倒だ。なので、辞書ファイルを一つにしてしまってPerlで分割した。スラッシュ以降をファイル名と考えてそのファイルに書き込むように・・・。で、エディタの1行コメントにスラッシュを登録して目で確認しやすいようにした。これで辞書ファイルの更新も楽になったかな。

某スロットの解析サイトのhtmlファイルを見易くするためのタグの書き換えするプログラム。テスト用なので他のサイトで使わないでくださいね。引数はhtmlファイル。

# 読み込みのパス指定
$path  = $ARGV[0];
$path2 = $ARGV[0];

$path2 =~ s/\./2\./g;
print “$path\n”;
print “$path2\n”;

open(IN, $path);
open(OUT, “> $path2″);

#二行目から
while($xx = <IN>) {
 
 # 全タグカットはこれ
 #$xx =~ s/<.*?>//g;
 
 # <!DOCTYPE
 $xx =~ s/<!DOCTYPE.*?>//g;
 # メタカット
 $xx =~ s/<META.*?>//g;
 # seo対策カット
 $xx =~ s/<A.*?>//g;
 # 画像カット
 $xx =~ s/<IMG.*?>//g;
 # タイトルカット
 $xx =~ s/<TITLE.*TITLE>//g;
 # サイズ変更
 $xx =~ s/<TABLE bgcolor=\”\#000000\” align=\”center\” width=\”920\”>/<TABLE bgcolor=\”\#000000\” align=\”center\” width=\”670\”>/g;
 # H1
 $xx =~ s/<H1.*H1>//g;
 # フレーム削除
 $xx =~ s/<IFRAME.*?>//g;
 $xx =~ s/<.IFRAME.*?>//g;
 # (C)
 $xx =~ s/(C)//g;
 # MARQUEE
 $xx =~ s/<MARQUEE.*MARQUEE>//g;
 # コメント削除
 $xx =~ s/<!.*>//g;
 # 強調解除
 $xx =~ s/<STRONG>//g;
 $xx =~ s/<.STRONG>//g;
 # リンク削除
 $xx =~ s/<LINK.*>//g;
 # スクリプトカット
 $xx =~ s/<SCRIPT.*>//g;
 # 最後カット
 $xx =~ s/<h4.*h4>//g;
 # みたまま
 $xx =~ s/パチスロ//g;
 $xx =~ s/機種別//g;
 $xx =~ s/解析攻略//g;
 $xx =~ s/解析//g;
 $xx =~ s/攻略//g;
 $xx =~ s/(あ行)//g;
 $xx =~ s/(か行)//g;
 $xx =~ s/(さ行)//g;
 $xx =~ s/(た行)//g;
 $xx =~ s/(な行)//g;
 $xx =~ s/(は行)//g;
 $xx =~ s/(ま行)//g;
 $xx =~ s/(や行)//g;
 $xx =~ s/(ら行)//g;
 $xx =~ s/(わ行)//g;
 # ここからすごい勢いで適当削除
 $xx =~ s/当サイトで紹介しているプログラムはご自身の判断でご利用下さい。//g;
 $xx =~ s/—-Copy right Slot Maniac //g;
 $xx =~ s/広告掲載依頼、//g;
 $xx =~ s/相.*、//g;
 $xx =~ s/メ.*ルは//g;
 $xx =~ s/管.*の//g;
 $xx =~ s/コチラ//g;
 #$xx =~ s/<TD align.*TD>//g;
 $xx =~ s/—//g;
 # これだとやりすぎ
 ## $xx =~ s/[\s ]+//g;
 if ($xx eq “\n”) {
  # いろいろ削除で空行になってしまった。
 } else {
  print(OUT $xx);
 }
}

close(OUT);
close(IN);

これでローカルにHTMLを保存していてもある程度は見易くなると思います。テーブルタグで左右に分かれているのを一つにするとかそういう類のことは面倒なのでそのまま。画像とかアフィリエイトとかも削除ですっきり。後は<BR>が連続しているところとかスペースだけで<BR>しているところをどうやって消し去ろうかと。そもそも文法書き換えられたら終わりの類。

csvファイルでエクセルのマクロのような特定のセルの要素を比較してそれにマッチしたものを取り出したいって時は簡単です。もっと簡単な方法があるって時はすみません。ちょっとしか触っていないもので。

splitコマンドを使えばいい。

普通にファイル開いて
open(IN, $path);
一行読み込んで
while($xx = <IN>) {
必要があったら置換して
$xx =~ s/xxx/yyy/g;#xxxとyyyの部分を書き換えてください。
@cell = split(/,/, $xx);
#二列目の要素で何かする
if ($cell[1] eq “hoge”}) {
#ここで何かする
}
}
close(IN)
それだけ。

splitコマンドが全部でした。

まぁぶっちゃけこういう感じのアマゾンのエクセルの表を操作して自分のアソシエイトIDを埋め込むものを作ってみたかったからなんですけれどね。他にも一応テキストフォーマットのデータを解析するに便利だったりと使い道も考えています。データベースへのアクセスにも使えると思いますけれどそれは後での話し。今のところは小規模のもののために使う予定です。

初めてのPerl 第5版
初めてのPerl 第5版
posted with amazlet at 11.02.07
Randal L. Schwartz Tom Phoenix brian d foy
オライリージャパン
売り上げランキング: 15701
Tags:
Back to top