日语,【今から品物を调达的读音したら、少なくとも四日がかかります!】(现在调货的话,至少得四天时间)这么

#!/usr/local/bin/perl
#┌─────────────────────────────────
#│ Aska BBS v3.1 ()
#│ Copyright (c) KentWeb
#│ webmaster@
#│ http://www./
#└─────────────────────────────────
$ver = 'ASKA BBS v3.1';
#┌─────────────────────────────────
#│ [注意事項]
#│ 1. このスクリプトはフリーソフトです。このスクリプトを使用した
いかなる損害に対して作者は一切の責任を負いません。
#│ 2. 設置に関する質問はサポート掲示板にお願いいたします。
直接メールによる質問は一切お受けいたしておりません。
#└─────────────────────────────────
# 【ファイル構成例】
public_html (ホームディレクトリ)
+-- aska / aska.cgi
askalog.cgi [606]
+-- lock [707] /
#-------------------------------------------------
#-------------------------------------------------
# ライブラリ取り込み
require './jcode.pl';
# タイトル名
$title = "隠し掲示板";
# タイトル文字の色
$tCol = "#666666";
# タイトル文字サイズ
$tSize = '24px';
# 本文文字サイズ
$bSize = '13px';
# 本文文字スタイル
$bFace = '"MS UI Gothic", "MS Pゴシック", Osaka';
# 記事題名の色
$subCol = "#DD0000";
# スクリプトURL
$script = './aska.cgi';
# ログファイル
$logfile = './askalog.cgi';
# 管理用パスワード
$pass = 'seiou';
# 最大記事数(これを超える記事は古い順に削除)
$max = 50;
# 戻り先URL
$home = "http://www13.plala.or.jp/gakuki3/kakisi.htm";
# タイトル画像を使う場合 (http://から画像を指定)
$ImgT = "";
$ImgW = 300; # 横幅サイズ
$ImgH = 70; # 縦幅サイズ
# bodyタグ
$body = '';
# URLの自動リンク (0=no 1=yes)
$autolink = 1;
# 引用部色変更
1 : 色指定を行うと「引用部」を色変更します
2 : この機能を使用しない場合は何も記述しないで下さい ($refCol="";)
$refCol = "#804000";
# 1ページあたりの記事表示件数
$pageView = 10;
# ファイルロック形式
→ 0=no 1=symlink関数 2=mkdir関数
$lockkey = 0;
# ロックファイル名
$lockfile = './lock/aska.lock';
# メール通知機能
0 : 通知しない
1 : 通知する → 自分の投稿記事も通知する
2 : 通知する → 自分の投稿記事は通知しない
$mailing = 0;
# メールソフトのパス(メール通知する場合)
→ sendmailの例: /usr/lib/sendmail
→ blatjの例: c:?www?mail?blatj.exe
$mailprog = '/usr/lib/sendmail';
# メール通知先アドレス(メール通知する場合)
$mailto = 'xxx@xxx.xxx';
# タグ広告挿入オプション
の代わりに「広告タグ」を挿入。
→ 広告タグ以外に、MIDIタグ や LimeCounter等のタグにも使用可能。
$banner1 = '';
# 表示部上部に挿入
$banner2 = '';
# 表示部下部に挿入
# 記事の更新は method=POST 限定する場合(セキュリティ対策)
→ 0=no 1=yes
$postonly = 1;
# 他サイトから投稿排除時に指定する場合(セキュリティ対策)
→ 掲示板のURLをhttp://から書く
$baseUrl = '';
# 投稿制限(セキュリティ対策)
0 : しない
1 : 同一IPアドレスからの投稿間隔を制限する
2 : 全ての投稿間隔を制限する
$regCtl = 1;
# 制限投稿間隔(秒数)
→ $regCtl での投稿間隔
$wait = 30;
# 投稿後の処理
→ 掲示板自身のURLを記述しておくと、投稿後リロードします
→ ブラウザを再読み込みしても二重投稿されない措置。
→ Locationヘッダの使用可能なサーバのみ
$location = '';
# ホスト取得方法
# 0 : gethostbyaddr関数を使わない
# 1 : gethostbyaddr関数を使う
$gethostbyaddr = 0;
# アクセス制限(半角スペースで区切る)
→ 拒否するホスト名又はIPアドレスを記述(アスタリスク可)
→ 記述例 $deny = '*. 211.154.120.*';
$deny = '';
#-------------------------------------------------
#-------------------------------------------------
if ($mode eq 'regist') { & }
elsif ($mode eq 'find') { & }
elsif ($mode eq 'howto') { & }
elsif ($mode eq 'admin') { & }
elsif ($mode eq 'usrdel') { & }
elsif ($mode eq 'check') { & }
#-------------------------------------------------
アクセス制限
#-------------------------------------------------
sub axscheck {
# IP&ホスト取得
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
if ($gethostbyaddr && ($host eq "" || $host eq $addr)) {
$host = gethostbyaddr(pack("C4", split(/?./, $addr)), 2);
if ($host eq "") { $host = $ }
local($flag)=0;
foreach ( split(/?s+/, $deny) ) {
s/?./???./g;
s/?*/?.?*/g;
s/??/?.??/g;
if ($host =? /$_/i || $addr =? /$_/i) { $flag=1; }
if ($flag) { &error("アクセスを許可されていません"); }
#-------------------------------------------------
#-------------------------------------------------
sub html {
local($flag,$no,$dat,$nam,$eml,$sub,$r_sub,$r_com,$next,$back);
# クッキー取得
local($cnam,$ceml,$curl,$cpwd) = &get_
if (!$curl) { $curl = 'http://'; }
# レス処理
$in{'res'} =? s/?D//g;
if ($in{'res'}) {
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com) = split(//);
if ($in{'res'} == $no) { $flag=1; }
close(IN);
if (!$flag) { &error("該当記事が見つかりません"); }
$sub =? s/^Re://g;
$sub =? s/?[?d+?]?s?//g;
$r_sub = "Re:[$no] $sub";
$r_com = "& $com";
$r_com =? s//?r& /
print "?n";
print "$banner1?n" if ($banner1 ne "");
# タイトル
if ($ImgT) {
print "?n";
print "$title?n";
print <<"EOM";
メッセージ
(英数字で8文字以内)
クッキー情報を保存
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
next if ($i
$page + $pageView);
($no,$dat,$nam,$eml,$sub,$com,$url) = split(//);
if ($eml) { $nam = ""; }
if ($autolink) { &auto_link($com); }
if ($refCol) { $com =? s/([?>]|^)(&[^<]*)/$1$2/g; }
print "[$no] $sub?n";
print "投稿者:$nam 投稿日:$dat?n";
print "[]$com";
print "" if ($url);
print "?n";
close(IN);
print "?n";
$next = $page + $pageV
$back = $page - $pageV
print "?n";
if ($back >= 0) {
print "?n";
print "?n";
print "?n";
if ($next < $i) {
print "?n";
print "?n";
print "?n";
# 著作権表示(削除禁止)
print <<EOM;
#-------------------------------------------------
#-------------------------------------------------
sub regist {
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim,@file,@w);
# 投稿チェック
if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
if ($baseUrl) { &refC }
# フォーム内容をチェック
if ($in{'name'} eq "") { &error("名前が入力されていません"); }
if ($in{'comment'} eq "") { &error("コメントが入力されていません"); }
if ($in{'email'} && $in{'email'}!? /[?w?.?-]+?@[?w?.?-]+?.[a-zA-Z]{2,6}$/)
{ &error("Eメールの入力内容が不正です"); }
if ($in{'url'} eq "http://" || $in{'url'} eq "https://") { $in{'url'}=""; }
# ロック処理
&lock if ($lockkey);
open(IN,"$logfile") || &error("Open Error: $logfile");
close(IN);
# 重複投稿チェック
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,$tim) = split(//, $file[0]);
if ($in{'name'} eq $nam && $in{'comment'} eq $com) {
&error("二重投稿は禁止です");
# 連続投稿チェック
if ($regCtl == 1) {
if ($host eq $hos && $time - $tim < $wait) { $flag=1; }
} elsif ($regCtl == 2) {
if ($time - $tim < $wait) { $flag=1; }
if ($flag) {
&error("現在投稿制限中です。もうしばらくたってから投稿をお願いします");
# 記事Noを採番
# 削除キーを暗号化
if ($in{'pwd'} ne "") { $pwd = &encrypt($in{'pwd'}); }
# 時間を取得
local($min,$hour,$mday,$mon,$year,$wday) = (localtime($time))[1..6];
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$w[$wday],$hour,$min);
while ($max <= @file) { pop(@file); }
unshift(@file,"$no$date$in{'name'}$in{'email'}$in{'sub'}$in{'comment'}$in{'url'}$host$pwd$time?n");
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
# クッキーを記憶
if ($in{'cook'} eq 'on') {
&set_cookie($in{'name'},$in{'email'},$in{'url'},$in{'pwd'});
# メール通知処理
if ($mailing == 1) { &mail_ }
elsif ($mailing == 2 && $in{'email'} ne $mailto) { &mail_ }
# リロード
if ($location) {
if ($ENV{'PERLXS'} eq "PerlIS") {
print "HTTP/1.0 302 Temporary Redirection?r?n";
print "Content-type: text/html?n";
print "Location: $location??n?n";
print "?n";
print "投稿は正常に処理されました?n";
print "?n";
print "?n";
print "?n?n";
#-------------------------------------------------
ワード検索
#-------------------------------------------------
sub find {
print <<EOM;
キーワードを入力し、検索ボタンを押してください。
キーワードはスペースで区切って複数指定することができます。
キーワード
foreach ("AND", "OR") {
if ($in{'cond'} eq $_) {
print "$_?n";
print "$_?n";
print " 表?示 ?n";
foreach (10,15,20,25,30) {
if ($in{'view'} == $_) {
print "$_件?n";
print "$_件?n";
print <<EOM;
# ワード検索の実行と結果表示
if ($in{'word'} ne "") {
local($i,$wd,$flag,$next,$back,$enwd,@wd,@find);
# 入力内容を整理
$in{'word'} =? s/?x81?x40/ /g;
@wd = split(/?s+/, $in{'word'});
print "?n";
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
foreach $wd (@wd) {
if (index($_,$wd) >= 0) {
if ($in{'cond'} eq 'OR') { }
if ($in{'cond'} eq 'AND') { $flag=0; }
if ($flag) {
next if ($i
$page + $in{'view'});
push(@find,$_);
close(IN);
print "▽ $in{'word'} に関連する記事は$i件見つかりました。?n";
foreach (@find) {
($no,$ymd,$nam,$eml,$sub,$com,$url) = split(//);
if ($eml) { $nam=""; }
if ($url) { $com .= ""; }
print "[$no] $sub ";
print "投稿者:$nam 投稿日:$ymd?n";
print "$com?n";
print "?n";
$next = $page + $in{'view'};
$back = $page - $in{'view'};
$enwd = &url_enc($in{'word'});
if ($back >= 0) {
print "[]?n";
if ($next < $i) {
print "[]?n";
print "?n";
#-------------------------------------------------
管理モード
#-------------------------------------------------
sub admin {
local($no,$dat,$nam,$eml,$sub,$com,$url,$hos);
# 入室画面
if ($in{'pass'} eq "") {
print <<EOM;
パスワードを入力して下さい
} elsif ($in{'pass'} ne $pass) {
&error("パスワードが違います");
# 削除処理
if ($in{'del'}) {
local($flag,$del,$no,@new);
# ロック開始
&lock if ($lockkey);
# 削除情報をマッチング
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no) = split(//);
foreach $del ( split(/?0/, $in{'del'}) ) {
if ($no == $del) { $flag=1; }
if (!$flag) { push(@new,$_); }
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
# 削除画面を表示
print <<EOM;
# 記事を展開
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com,$url,$hos) = split(//);
if ($eml) { $nam=""; }
$com =? s/]*(>|$)//g;
if (length($com) > 60) {
$com = substr($com,0,58);
$com .= "...";
print "[$no] $sub $nam - $dat &$hos&?n";
print "$com?n";
close(IN);
print <<EOM;
#-------------------------------------------------
#-------------------------------------------------
sub howto {
print <<EOM;
この掲示板はクッキー対応です。一度記事を投稿いただくと、おなまえ、Eメール、URL、削除キーの情報は2回目以降は自動入力されます。(ただし利用者のブラウザがクッキー対応の場合)
投稿記事には、タグは一切使用できません。
記事を投稿する上での必須入力項目は「おなまえ」と「メッセージ」です。Eメール、URL、題名、削除キーは任意です。
記事には、半角カナは一切使用しないで下さい。文字化けの原因となります。
記事の投稿時に「削除キー」にパスワード(英数字で8文字以内)を入れておくと、その記事は次回削除キーによって削除することができます。
記事の保持件数は最大$max件です。それを超えると古い順に自動削除されます。
既存の記事に簡単に「返信」することができます。各記事にある「返信」のリンク部を押すと投稿フォームが返信用となります。
過去の投稿記事から「キーワード」によって簡易検索ができます。トップメニューののリンクをクリックすると検索モードとなります。
管理者が著しく不利益と判断する記事や他人を誹謗中傷する記事は予?告なく削除することがあります。
#-------------------------------------------------
ユーザ記事削除
#-------------------------------------------------
sub usrdel {
local($match,$flag,$no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw,@new);
# 投稿チェック
if ($postonly && !$post_flag) { &error("不正なアクセスです"); }
if ($baseUrl) { &refC }
if ($in{'no'} eq '' || $in{'pwd'} eq '') {
&error("削除Noまたは削除キーが入力モレです");
# ロック開始
&lock if ($lockkey);
open(IN,"$logfile") || &error("Open Error: $logfile");
while () {
($no,$dat,$nam,$eml,$sub,$com,$url,$hos,$pw) = split(//);
if ($in{'no'} == $no) {
if (!$pw) { $flag=2; }
$match = &decrypt($in{'pwd'}, $pw);
push(@new,$_);
close(IN);
if ($flag == 2) { &error("削除キーが設定されていません"); }
elsif ($flag == 0) { &error("該当記事が見当たりません"); }
if ($match != 1) { &error("削除キーが違います"); }
# ログを更新
open(OUT,">$logfile") || &error("Write Error: $logfile");
print OUT @
close(OUT);
# ロック解除
&unlock if ($lockkey);
#-------------------------------------------------
デコード処理
#-------------------------------------------------
sub decode {
local($buf,$key,$val);
undef(%in);
if ($ENV{'REQUEST_METHOD'} eq "POST") {
$post_flag=1;
if ($ENV{'CONTENT_LENGTH'} > 51200) { &error("投稿量が大きすぎます"); }
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
$post_flag=0;
$buf = $ENV{'QUERY_STRING'};
foreach ( split(/&/, $buf) ) {
($key, $val) = split(/=/);
$val =? tr/+/ /;
$val =? s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/
# S-JISコード変換
&jcode'convert(*val, "sjis", "", "z");
# タグ処理
$val =? s/&/&/g;
$val =? s/"/&/g;
$val =? s//&/g;
$val =? s/?0//g;
# 改行処理
if ($key eq "comment") {
$val =? s/?r?n//g;
$val =? s/?r//g;
$val =? s/?n//g;
$val =? s/?r//g;
$val =? s/?n//g;
$in{$key} .= "?0" if (defined($in{$key}));
$in{$key} .= $
if ($in{'sub'} eq "") { $in{'sub'} = "無題"; }
$page = $in{'page'};
$mode = $in{'mode'};
# タイムゾーン設定
$ENV{'TZ'} = "JST-9";
$lockflag=0;
$headflag=0;
#-------------------------------------------------
HTMLヘッダ
#-------------------------------------------------
sub header {
if ($headflag) { }
print "Content-type: text/html?n?n";
print <<"EOM";
$headflag=1;
#-------------------------------------------------
エラー処理
#-------------------------------------------------
sub error {
if ($lockflag) { & }
print <<EOM;
#-------------------------------------------------
クッキー発行
#-------------------------------------------------
sub set_cookie {
local(@cook) = @_;
local($gmt, $cook, @t, @m, @w);
@t = gmtime(time + 60*24*60*60);
@m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
# 国際標準時を定義
$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]);
# URLエンコード
foreach (@cook) {
s/(?W)/sprintf("%%%02X", unpack("C", $1))/
$cook .= "$_";
print "Set-Cookie: ASKA_BBS=$ expires=$gmt?n";
#-------------------------------------------------
クッキー取得
#-------------------------------------------------
sub get_cookie {
local($key, $val, *cook);
# クッキーを取得
$cook = $ENV{'HTTP_COOKIE'};
# 該当IDを取り出す
foreach ( split(/;/, $cook) ) {
($key, $val) = split(/=/);
$key =? s/?s//g;
$cook{$key} = $
# データをURLデコードして復元
foreach ( split(//, $cook{'ASKA_BBS'}) ) {
s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/
push(@cook,$_);
return (@cook);
#-------------------------------------------------
#-------------------------------------------------
sub encrypt {
local($in) = @_;
local($salt, $enc, @s);
@s = ('a'..'z', 'A'..'Z', '0'..'9', '.', '/');
$salt = $s[int(rand(@s))] . $s[int(rand(@s))];
$enc = crypt($in, $salt) || crypt ($in, '$1$' . $salt);
#-------------------------------------------------
#-------------------------------------------------
sub decrypt {
local($in, $dec) = @_;
local($salt) = $dec =? /^?$1?$(.*)?$/ && $1 || substr($dec, 0, 2);
if (crypt($in, $salt) eq $dec || crypt($in, '$1$' . $salt) eq $dec) {
return (1);
return (0);
#-------------------------------------------------
ロック処理
#-------------------------------------------------
sub lock {
# 古いロックは削除
if (-e $lockfile) {
local($mtime) = (stat($lockfile))[9];
if ($mtime < time - 30) { & }
# リトライ回数定義
local($retry) = 5;
# symlink関数式ロック
if ($lockkey == 1) {
while (!symlink(".", $lockfile)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
# mkdir関数式ロック
} elsif ($lockkey == 2) {
while (!mkdir($lockfile, 0755)) {
if (--$retry <= 0) { &error('LOCK is BUSY'); }
$lockflag=1;
#-------------------------------------------------
ロック解除
#-------------------------------------------------
sub unlock {
if ($lockkey == 1) {
unlink($lockfile);
} elsif ($lockkey == 2) {
rmdir($lockfile);
$lockflag=0;
#-------------------------------------------------
メール送信
#-------------------------------------------------
sub mail_to {
local($msub,$mbody,$mcom,$email,$ptype);
# メールプログラムのパスチェック
unless (-e $mailprog) { &error("メールプログラムのパスが不正です"); }
if ($mailprog =? /blat/i) { $ptype=2; } else { $ptype=1; }
# メールタイトルを定義
$msub = "[$title : $no] $in{'sub'}";
# 本文の改行?タグを復元
$mcom = $in{'comment'};
$mcom =? s//?n/g;
$mcom =? s/&//g;
$mcom =? s/&/"/g;
$mcom =? s/&/&/g;
$mbody = "$titleに以下の投稿がありました。?n?n";
$mbody .= "Date : $date?n";
$mbody .= "Host : $host?n";
$mbody .= "Agent: $ENV{'HTTP_USER_AGENT'}?n?n";
$mbody .= "名前 : $in{'name'}?n";
$mbody .= "email: $in{'email'}?n";
$mbody .= "題名 : $in{'sub'}?n";
$mbody .= "参照 : $in{'url'}?n" if ($in{'url'});
$mbody .= "?n$mcom?n";
# BlatJ送信
if ($ptype == 2) {
# 一時ファイル書き出し
local($tempfile) = "./$$?.tmp";
open(TMP,">$tempfile") || &error("Write Error: $tempfile");
print TMP $
close(TMP);
# 送信処理
open(MAIL,"| $mailprog $tempfile -t $mailto -s ?"$msub?" -q")
|| &error("送信失敗");
close(MAIL);
# 一時ファイル削除
unlink($tempfile);
# sendmail送信
# 題名をBASE64化
$msub = &base64($msub);
# メールアドレスがない場合は管理者アドレスに置き換え
if ($in{'email'} eq "") { $email = $ }
else { $email = $in{'email'}; }
# sendmail送信
open(MAIL,"| $mailprog -t") || &error("メール送信失敗");
print MAIL "To: $mailto?n";
print MAIL "From: $email?n";
print MAIL "Subject: $msub?n";
print MAIL "MIME-Version: 1.0?n";
print MAIL "Content-type: text/ charset=ISO-2022-JP?n";
print MAIL "Content-Transfer-Encoding: 7bit?n";
print MAIL "X-Mailer: $ver?n?n";
foreach ( split(/?n/, $mbody) ) {
&jcode'convert(*_, 'jis', 'sjis');
print MAIL $_, "?n";
close(MAIL);
#-------------------------------------------------
自動リンク
#-------------------------------------------------
sub auto_link {
$_[0] =? s/([^=^?"]|^)(https??:[?w?.???-?/???&?=?@?;?#?:?%]+)/$1$2/g;
#-------------------------------------------------
URLエンコード
#-------------------------------------------------
sub url_enc {
local($_) = @_;
s/(?W)/'%' . unpack('H2', $1)/
#-------------------------------------------------
REFチェック
#-------------------------------------------------
sub refCheck {
local($ref) = $ENV{'HTTP_REFERER'};
$ref =? s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/
$baseUrl =? s/(?W)/??$1/g;
if ($ref && $ref !? /$baseUrl/i) { &error("不正なアクセスです"); }
#-------------------------------------------------
BASE64変換
#-------------------------------------------------
# とほほのWWW入門で公開されているルーチンを参考にしました。
# http://tohoho.wakusei.ne.jp/
sub base64 {
local($sub) = @_;
&jcode'convert(*sub, 'jis', 'sjis');
$sub =? s/?x1b?x28?x42/?x1b?x28?x4a/g;
$sub = "=?iso-2022-jp?B?" . &b64enc($sub) . "?=";
sub b64enc {
local($ch)="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/";
local($x, $y, $z, $i);
$x = unpack("B*", $_[0]);
for ($i=0; $y=substr($x,$i,6); $i+=6) {
$z .= substr($ch, ord(pack("B*", "00" . $y)), 1);
if (length($y) == 2) {
$z .= "==";
} elsif (length($y) == 4) {
$z .= "=";
#-------------------------------------------------
チェックモード
#-------------------------------------------------
sub check {
print <<EOM;
Check Mode
# ログファイル
if (-e $logfile) {
print "LOGパス:OK?n";
if (-r $logfile && -w $logfile) { print "LOGパーミッション:OK?n"; }
else { print "LOGパーミッションが不正です。?n"; }
print "LOGのパスが不正です:NG → $logfile?n";
# ロックディレクトリ
print "LOCK形式:";
if ($lockkey == 0) { print "LOCK設定なし?n"; }
if ($lockkey == 1) { print "symlink?n"; }
else { print "mkdir?n"; }
local($lockdir) = $lockfile =? /(.*)[???/].*$/;
print "LOCK DIR:$lockdir?n";
if (-d $lockdir) {
print "LOCK DIRパス:OK?n";
if (-r $lockdir && -w $lockdir && -x $lockdir) {
print "LOCK DIRパーミッション:OK?n";
print "LOCK DIRパーミッション:NG → $lockdir?n";
print "LOCK DIRパス:NG → $lockdir?n";
print <<EOM;日语精彩阅读328篇_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
日语精彩阅读328篇
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢}

我要回帖

更多关于 宠物小精灵第一部日语 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信