2005-01-01から1年間の記事一覧

Pgsqlです。 postgreSQLのDBを全てバックアップを取る方法です。 疲れたあぁ。。。。 簡単に書いてあるのにユーザーやアクセス権限やらで思ったよりめんどくさかった。。。orzユーザー名 posrgresで全て実行します。$ pg_dumpall -c > /usr/local/pgsql/back…

HTML::Templateモジュールを使ってCGIからテンプレートをセット際の、 TMPL_LOOPについて。TMPL_LOOPの基本的な使い方としては、 ・テンプレート記載 ・プログラム記載 my @value; my @val = ('ルフィ','ゾロ','ナミ','ウソップ','チョッパー','ロビン');…

DBIクラスメソッドPerlでMySQLを使うときは、DBIモジュールを利用します。・接続 $dbh = DBI->connect($data_source, $username, $password) or die $DBI::errstr;・SQL文実行 $dbh->do($str) || die $dbh->errstr;もしくは、unless ($dbh->do($sql)) { die …

GETでフォームからデータを送信する場合に、 URLエンコードという方法を使用します。文字列を '%a5%a8%a5%b9%a5%b1%a1%bc%a5%d7' こんな感じにエンコード(暗号化)します。 # $str を URLエンコードする $str =~ s/(\W)/'%' . unpack('H2', $1)/eg; すると、…

データベース作成 CREATE DATABASE dbname; CREATE DATABASE dbname WITH ENCODING = 'EUC_JP'; データベース削除 DROP DATABASE db_name; テーブルの作成 CREATE TABLE table_name ( id int SERIAL UNIQUE, #重複しない順番の値をふる column_name1 int NOT…

順序を決めて値を取り出したい場合があると思います。そんな時は、order by asc(昇順)・order by desc(降順)を使って いました。ところがこれは1つの値にのみ適用されるもので、 2つ以上の値を昇順・降順などでソートしたい場合は、 order by value1 asc, …

sprintf sprintfは文字のフォーマットに使います。例えば、 my $month = 1; my $s_month = sprintf("%02d", $month); こうすると、1が、01という表示に変わります。 %02d というところが、何桁でどういった表示にするかという形式の 部分ですね。 詳しくは、…

Jcodeをつかって、半角→全角にしたりするには、 Jcodeのtrを使います。 例: Jcode->new($str)->tr( 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲン', '*')->euc(); カタカナを*に置換して、カタカナか、そうでない…

create table の際に作成する、 priary keyと、シリアル番号の付け方。 create table kaizoku ( id serial unique, primary key(id) ); MySQLでいうところのAUTOINCREMENTになります。

テーブルの中のどれかをグループ化して、集計します。例えば、table mugiwara id | name | yen | 1 |ruffy | 1000| 2 |ruffy | 500| 3 |zoro | 150| 4 |zoro | 100| 5 |usopp | 5000| 6 |usopp | 1000| こんなテーブルがあるとします。やっぱりこういうテー…

テーブルの結合

これでいいみたい。 SELECT * FROM mugiwara INNER JOIN work ON mugiwara.num = work.num; どんなテーブルかというと、mugiwara num name 1 zoro 2 ruffy work num work 1 kenshi 3 captain そして、上のSQL文でくっつけると。。。。 1 zoro kenshi となる…

月の日数を調べる

誰かが作った関数を発見。 親切な方もいるものだ。 これでかなり仕事が楽になります〜! ありがとう、神よ♪使い方 my @nen = DaysOfMonth(2005,1); sub DaysOfMonth { # my変数の宣言 my($check_year, $check_mon); # 引数のチェックと変数の作成 if ( $_[0]…

ランキング

前回の「sort」を発展させて、ランキングを作ってみましょう。 my %hash = (A => 2, B => 5, C => 3, D => 5); こんな配列があるとします。これをどういう風にしたいかというと、 1位 A 5点 2位 B 3点(同位) 2位 C 3点(同位) 4位 D 2点とこんな感じにし…

sort

ハッシュ値を並べ替えます。 検索システムなどの時に使ったりするんですかね? 昇順と降順は、$aと$bを入れ替えます。文字列を降順にする my @name_list = sort { $b cmp $a } @name; 数値を昇順にする my @num_list = sort { $a $b } @nums; ハッシュのキー…

重複データの個数を数える

@fruits('みかん','もも','もも','みかん','みかん');このような配列があります。 この配列で、「みかんが○個」「ももが○個」を調べたいとします。 foreach $name(@fruits) foreachで、配列の中身を一つずつ$nameに格納 { %hash; $hash{$name} => $hash{$nam…

cookie

クッキーでは、ブラウザに情報を送ってユーザーを判別することができます。 そのためには、HTTPヘッダを利用します。基本的には、クッキーを送るにはこのように書けばOKです。 print "Content-Type: text/html\n" print "Set-cookie: キー名=値; expires=有…

半角カナを全角カナに。

jcode.pl版 require '../jcode.pl'; &jcode::convert(\$value,'euc'); &jcode::h2z_euc(\$value); Jcode.pm版 use Jcode; &Jcode::convert(\$value,'euc'); require Jcode::H2Z; &Jcode::H2Z::h2z(\$value); モジュールで使うときの記述 Jcode->new($query->…

コンストラクタの継承

親 = Kaizoku.pm 子 = onepiece.cgiKaizoku.pm sub new { my $class = shift; my %args = @_; my $self = { tmpl_dir => $args{tmpl_dir}, tmpl_message => $args{tmpl_message} }; bless $self, $class; }これが、親のコンストラクタです。ここに、tmpl_for…

修正で戻った時、フォームにデータを残す

確認画面で、「修正」で前の画面に戻った時に、 データが残ってる場合と消えてしまう場合がありますよね。 データが残っているのはブラウザによって違うので、確実に残すためには プログラムできちんと指定してあげなければ。「戻る」ボタンで今まで使用して…

メールアドレスチェック

では、以上のことをふまえて、メールアドレスのチェックをしてみましょう。 今回は、携帯を含むことにします。携帯を含まない場合は、Perlメモ を使うとほぼ完璧なメールチェックができると思います。まず、携帯で許可されているアドレスはというと、 AU .(…

正規表現その3

$1 =~ /[^_0-9a-zA-Z\-\.]/ はて。なんですかね?これは。/パターン/これはOK。[^_0-9a-zA-Z\-\.]なんだこれ。。。 文字クラス マッチングの対象となる文字列中に、[ ] (ブラケット)で囲んだ文字の いずれかをマッチさせるため表現です。 ー(マイナス)は、…

正規表現2(例題)

これはどういう意味か。 if ($str =~ /^(.+)@(.+)$/) /パターン/という形なので、中のものにマッチするかどうか調べています。^(.+)なんですかね?これ。複数の文字にマッチ ^ 文字列(行)の最初にマッチする $ 文字列(行)の最後にマッチする *(アスタリスク…

正規表現その1

パターン結合演算子 スカラー変数(式)> =~ 演算子、置換演算子、変換演算子> 例: $input =~ s/&/&/g スカラー変数(式)とマッチ演算子、置換演算子、変換演算子を結合する。 左側はスカラー変数(式)であること。 マッチ演算子 /パターン/[修飾子]ある文字…

文字数制限

文字の長さを調べるlength関数を使います。 $comment #制限したい文字 if(length($value)>10) { push(@message, '5文字以内で入力してください。'); } length関数で出る文字数は半角文字のバイト数なので、 全角の場合は2倍した数字を入れなくてはいけません…

HTML::Templateモジュール

ちょっと思い出しメモ。 テンプレート作成 my $template = new HTML::Template(filename => 'kaizoku.html'); テンプレートに値をセット $template->param(prev => $perv); $teplate->param(next => $next); HTMLの作成 my $body = $template->output(); HTM…

モジュール小技

小技です。子モジュールで属性(変数)をセットする部分がありました。to_email => ['mail'], from_mail => ['ruffy@kaizoku.co.jp']ここです。これは、メールフォームの作成で、問い合わせ相手に自動返信するものなんですが、 ここに問い合わせてきた人のアド…

モジュールの利用

モジュールの作り方はわかりました。では、うまく利用してみましょう。 モジュールA → モジュールB → メイン処理 AはBの親で、Bはメイン処理の親という場合。 モジュールA コンストラクタ sub new { my $class = shift; my %op = @_; #ハッシュで受け渡しす…

KCatch

KCatchは、エラーが起きた時に、赤い文字で知らせてくれるもの。 use KCatch qw( execdata );__DATA__ #(デバッグツール) なるべく上の方に書きましょう。

use lib

use lib './cgi-lib'; モジュールファイルは全てcgi-libに入れます。 そして、どこにモジュールがあるか書いておきます。 それが、use lib。

オーバーライドの位置

!!オーバーライドは、処理の頭で行うこと。!! 個人的な覚え書き sub start { my $self = shift; my @message; $self->SUPER::start();#ここに書かないとエラーになるよ my $query = $self->getQuery();