Perl

qw

久しぶりにこのカテゴリ使うな・・・ まぁ、あんまり内容はないんだけど。いいたいことはひとつ。 qwすげぇ便利。 qwてのは、qw|a b c|と書くと("a", "b", "c")と同じ意味になる、というただそれだけの機能なのですけど、最近仕事でちょっとしたデータパーサ…

DBD::SQLiteでJOINした後にfetchrow_hashrefすると?

ほかのドライバがどうなっているのかは知らないけれど、fetchrow_hashrefをとりあえずDBD::SQLiteで動かしたときの結果をメモ。 結果は、平たく言うと二つのテーブルで名前がカブっているカラムのデータは右側(JOINしたほう)のカラムで上書き。ハッシュに左…

DBとしてSQLiteを使用したCGIの開発のデバッグ環境

五月に入ってからとあるCGIの開発をしているのですが(6月ごろ公開予定)、その開発環境がなかなかに便利なので忘れないように書いておくよ。 ちなみに、開発しようとするCGIプログラムは、データソースとしてSQLiteを使用します。最近はSQLiteがインストール…

DBIを使用したプログラミングに関する注意点

SQLを使うならSQLインジェクションには気を使わなければならない! というわけで、 use DBI; my $dbh = DBI->connect("..."); を前提として、 sub BadPattern($$$){ my ($id, $name, $dat) = @_; $dbh->do("INSERT INTO table(name, data) VALUES('$name', '…

文法めも

いろんな言語を触ってると細かいところはすぐ忘れる・・・。 ハッシュ(連想配列)の定義は my %hash = ( 'key' => 'value, 'key2' => 'value2'); print $hash{'key'}; こんな感じ。{}で囲むのはハッシュの参照。 my $hash = { 'key' => 'value, 'key2' => 'va…

エラーが見えません・・・

久しぶり(二年ぶりぐらい)にPerlカテを使ってみるテスト。 なんだよこいつっ!杓子定規に「いんたーなるさーばーえらー」ばっかり返しやがって・・・! などと戦闘ヘリに苦い汁を飲まされたみなさんも多いはず・・・。 KCatch.pm/CGI エラーメッセージをブ…

PNGの画像サイズ

PNGの画像サイズを取得する方法。 open FPNG,$imgPath; binmode(FPNG); $FSIZE=read(FPNG,$PNG,24); $W="?"; $H="?"; if($PNG=~/^\x89PNG\x0D\x0A\x1A\x0A[\x00-\xFF]{4}IHDR([\x00-\xFF]{4})([\x00-\xFF]{4})/){ $W=unpack "N",$1; $H=unpack "N",$2; } 一…

CSSで画像をランダムに

しようと思ったけどどう考えても無理なので body { background-image: url("select.cgi/dat.txt"); } こんな感じにして、select.cgiは #! /usr/bin/perl $file = substr($ENV{'PATH_INFO'},1); srand; open(FILE, "< $file"); rand($.) < 1 and $line = $_ w…

簡単UTF8

最初の方に use utf8; use Encode qw(from_to); と書く。 ファイルをUTF-8で保存する。 ContentTypeのencodingは当然utf-8にする。 utf8じゃないデータ(ファイル名・ファイルの中身など)は from_to($name,'shift-jis','utf8'); などとする。shift-jisの所はe…

ごちゃごちゃ

ちょっとこれから更新管理をしようと思ったけど会社で使っているPCはなぜかwincvsがエラー落ちするし、そもそも管理されるモノがExcelのマクロ=バイナリファイル1個なので差分とれるかあやすいので、更新した関数名とコメントだけ記録していくことに。 で、…

化ける〜〜

mySQL + Perl + DBI + DBD::mySQL + UTF-8 + CGIで私用のプログラムを書いてるんですが・・・なぜかひらがなが化ける。けど「まみむめも」は化けない。なんだこりゃ、わけわからんぞ。ODBCで接続するようにしたら直ったりするのかなぁ。でも普通にmysqlからS…

正規表現の

カテゴリー強化月間、ということで。 HTMLやらXMLやらのファイルからタグ情報とリテラルを取り出そうとすると、次のようなプログラムになると思います。 while ($HTML=~/<(.+?)>([^<]*)/g) { my ($tag,$literal) = ($1,$2); #ここで何やら処理 } それの正規…