転送URLをするPerl CGI
転送URLを実現するCGIを書いてみました。なんとなく仕事で必要なので。あと、このソースだと、転送URLの対応表は直書きですw
Filename: shorturl.cgi
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
# main
package main;
my $q = CGI->new();
my $query = $q->param('q');
my $a = redirect->new();
$a->set_dict( \&list );
$a->query_redirect($query);
exit;
# replace function
sub list {
my $query = shift;
return undef unless defined $query;
my $hash_list =
{
'1' => 'http://www.dtpwiki.jp/',
'2' => 'http://dtpwiki.jp/',
};
return exists($hash_list->{$query})
?$hash_list->{$query}:undef;
}
# redirect
package redirect;
sub new{
return bless{ _DATA => { } }, shift;
}
sub dataref { $_[0]->{ _DATA } }
sub set_dict {
my $self = shift;
my $sub = shift;
$self->dataref->{'dict_sub'} = $sub;
return;
}
sub query {
my $self = shift;
my $query = shift;
return $self->dataref->{'dict_sub'}->( $query );
}
sub redirect {
require CGI;
my $self = shift;
my $url = shift;
my $q = CGI->new();
if ( defined $url ) {
print $q->redirect( $url );
return;
}
else {
print $q->header( -status => 404 );
print "404 not found\n";
return;
}
}
sub query_redirect {
my $self = shift;
my $q = shift;
$self->redirect(
$self->query( $q )
);
return;
}
1;
OOPにしてみたので、オブジェクトを生成した後、URLの対応付けを行うサブルーチンを参照渡しで設定するようなかんじになっています。だから、ナントカSQLによる辞書参照ルーチンを付けるといいんだけどめんどくさくなって放置。
なんつうか、TinyURLとかYouTubeみたいに、英字のパーマリンクみたいにしたいんですけれども、エンコード新たに作るのも億劫で。どっかにYouTubeのPermalink解説したページあったと思ったけど今探すと、YouTubeもPermalinkも一般的単語すぎて見つからんなー
トラックバック
この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/19018/17459214
この記事へのトラックバック一覧です: 転送URLをするPerl CGI:





![森田 創: WEB+DB PRESS 総集編 [Vol.1~60]](http://ecx.images-amazon.com/images/I/51aE58LxWlL._SL75_.jpg)
















![: 電子ルーペ ViewPe[ビューペ] 3R-MSV35 マイクロスコープ デジタル顕微鏡 高機能 低価格 読書 植物 研究 肌チェック](http://ecx.images-amazon.com/images/I/41erkiQgAsL._SL75_.jpg)





![: Optimus bright [docomo L-07C] 対応 予備バッテリー 1500mAh BL-44JN](http://ecx.images-amazon.com/images/I/41gjqsDjq%2BL._SL75_.jpg)










![: パンツの穴 [DVD]](http://ecx.images-amazon.com/images/I/21R9SEY1HPL._SL75_.jpg)

















