転送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も一般的単語すぎて見つからんなー
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2323





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする