%PDF- %PDF-
Direktori : /home/rappan/www/cgi_bbs_puk/ |
Current File : //home/rappan/www/cgi_bbs_puk/common.pl |
package common; #*************************************************************************** # 概 要 : ルーチン集 # 使用環境 : Perl5 # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.01 | 2006/03/06 | 天都 葉霧 | [css_background_attachment]追加 # | | | [css_background_repeat]追加 # | | | [css_background_position]追加 # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** #*************************************************************************** # 概 要 : css font-weight # 引 数 : 0 : 0 = normal # 1 = bold # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub css_font_weight { if($_[0] == 1) { return('bold'); } else { return('normal'); } } #*************************************************************************** # 概 要 : css text-align # 引 数 : 0 : 0 = center # 1 = left # 2 = right # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub css_text_align { if($_[0] == 1) { return('left'); } elsif($_[0] == 2) { return('right'); } else { return('center'); } } #*************************************************************************** # 概 要 : css border-style # 引 数 : 0 : 0 = none # 1 = solid # 2 = dotted # 3 = double # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub css_border_style { if($_[0] == 1) { return('solid'); } elsif($_[0] == 2) { return('dotted'); } elsif($_[0] == 3) { return('double'); } else { return('none'); } } #*************************************************************************** # 概 要 : css background-attachment # 引 数 : 0 : 0 = scroll # 1 = fixed # # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/03/06 | 天都 葉霧 | #*************************************************************************** sub css_background_attachment { if($_[0] == 1) { return('fixed'); } else { return('scroll'); } } #*************************************************************************** # 概 要 : css background-repeat # 引 数 : 0 : 0 = no-repeat # 1 = repeat # 2 = repeat-x # 3 = repeat-y # # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/03/06 | 天都 葉霧 | #*************************************************************************** sub css_background_repeat { if($_[0] == 1) { return('repeat'); } elsif($_[0] == 2) { return('repeat-x'); } elsif($_[0] == 3) { return('repeat-y'); } else { return('no-repeat'); } } #*************************************************************************** # 概 要 : css background-position # 引 数 : 0 : 縦表示位置 0 = 上 # 1 = 中央 # 2 = 下 # 1 : 横表示位置 0 = 左 # 1 = 中央 # 2 = 下 # # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/03/06 | 天都 葉霧 | #*************************************************************************** sub css_background_position { if($_[0] == 1) { $height = '50%'; } elsif($_[0] == 2) { $height = '100%'; } else { $height = '0%'; } if($_[1] == 1) { $width = '50%'; } elsif($_[1] == 2) { $width = '100%'; } else { $width = '0%'; } return("$width $height"); } #*************************************************************************** # 概 要 : 現在日時の取得 # 引 数 : 0 : 0 = 年無し # 1 = 年有り # 1 : 0 = 曜日無し # 1 = 曜日有り # 2 : 0 = 秒無し # 1 = 秒有り # 戻 り 値 : 現在日時 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub get_datetime { @Now = localtime(time); $Now[5] += 1900; $Now[4] = sprintf("%02d",$Now[4]+1); $Now[3] = sprintf("%02d",$Now[3]); $Now[2] = sprintf("%02d",$Now[2]); $Now[1] = sprintf("%02d",$Now[1]); $Now[0] = sprintf("%02d",$Now[0]); $Now[6] = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[$Now[6]]; if($_[0] == 1) { $date = "$Now[5]/"; } $date .= "$Now[4]/$Now[3] "; if($_[1] == 1) { $date .= "( $Now[6] ) "; } $date .= "$Now[2]:$Now[1]"; if($_[2] == 1) { $date .= ":$Now[0]"; } return($date); } #*************************************************************************** # 概 要 : URL自動リンク # 引 数 : 0 : in : 自動リンクを行う文字列 # out : リンク化した文字列 # 1 : 0 = リンクを同じウインドウで開く # 1 = リンクを新しいウインドウで開く # 戻 り 値 : # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub auto_link { if($_[1] == 1) { $_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; } else { $_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1<a href=\"$2\">$2<\/a>/g; } } #*************************************************************************** # 概 要 : cookieの取得 # 引 数 : 0 : cookie名 # 戻 り 値 : 値 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub get_cookie { local(@DATA,@COOKIE,$key,$value,$line); @COOKIE = split(/; */,$ENV{'HTTP_COOKIE'}); foreach $line(@COOKIE) { ($key,$value) = split(/=/,$line); $value =~ s/ //g; $DUMMY{$key} = $value; } return($DUMMY{$_[0]}); } #*************************************************************************** # 概 要 : cookieの設定 # 引 数 : 0 : cookie名 # 1 : 有効期限(日単位) # 2 : データ(「,」区切り) # 戻 り 値 : Set-Cookie # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub set_cookie { @DATE = gmtime(time+$_[1]*86400); $DATE[5] += 1900; $DATE[3] = sprintf("%02d",$DATE[3]); $DATE[2] = sprintf("%02d",$DATE[2]); $DATE[1] = sprintf("%02d",$DATE[1]); $DATE[0] = sprintf("%02d",$DATE[0]); $w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat')[$DATE[6]]; $m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')[$DATE[4]]; $gmt = "$w, $DATE[3]\-$m\-$DATE[5] $DATE[2]:$DATE[1]:$DATE[0] GMT"; return("Set-Cookie: $_[0]=$_[2]; expires=$gmt\n"); } #*************************************************************************** # 概 要 : ホスト名の取得 # 引 数 : 0 : IPアドレス # 戻 り 値 : ホスト名 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub get_host { $host = gethostbyaddr(pack('C4',split(/\./,$_[0])),2); if($host eq '') { $host = $_[0]; } else { if($host =~ /\.(.+)\.(.+)\.(.+)$/) { $host = "\*\.$1\.$2\.$3"; } elsif($host =~ /\.(.+)\.(.+)$/) { $host = "\*\.$1\.$2"; } elsif($host =~ /\.(.+)$/) { $host = "\*\.$1"; } } return($host); } #*************************************************************************** # 概 要 : ファイルロック # 引 数 : 0 : ロックファイル # 戻 り 値 : 0 = ロック完了 # 1 = ロック中 # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub file_lock { # 古いロックは削除する if((-e $_[0]) || (-d $_[0])) { $retry = (stat($_[0]))[9]; if($retry < time - 30) { &file_unlock($_[0]); } } $retry = 5; if(eval{symlink("","");}, $@ eq "") { # symlink関数 while(!symlink(".",$_[0])) { if(--$retry <= 0) { return(1); } sleep(1); } } else { # mkdir関数 while(!mkdir($_[0],755)) { if(--$retry <= 0) { return(1); } sleep(1); } } return(0); } #*************************************************************************** # 概 要 : ファイルロックの解除 # 引 数 : 0 : ロックファイル # 戻 り 値 : # 備 考 : # #=========================================================================== # Ver. | Date | Name | Note #-------+------------+------------------+----------------------------------- # 1.00 | 2006/02/14 | 天都 葉霧 | #*************************************************************************** sub file_unlock { if(-e $_[0]) { unlink($_[0]); } if(-d $_[0]) { rmdir($_[0]); } } 1;