CGI-BBS > CGI > Perl > Perlの改造で複数のログファイルを表示したい。ご返答頂いた件で


カレッヂ
カレッヂ


質問者 バカボン  投稿日 2004/5/6(木) 19:49:31
記事を閉じてしまいましたので改めてスレッド立てます(^^;;
さっそくお答え頂きましてありがとうございます。
そこで実際に書いて頂いたソースは
下記のソースの中で該当する範囲はどこからどこになるのでしょうか?
それとも下記のソース全てでしょうか?
FileOpenのサブルーチンはそのままでよろしいのでしょうか?

if($FORM{Tfile} eq 'Data' and $CNF{Check}{UdataSearch}){
    &FileOpen('FILE',"$UserDir/user.cgi");
        &FileOpen2('FILE',"$UserDir/user2.cgi");
            &FileOpen3('FILE',"$UserDir/user3.cgi");
                &FileOpen4('FILE',"$UserDir/user4.cgi");
                (FILE) = (&FileOpen,&FileOpen2,&FileOpen3,&FileOpen4); 
    while(<FILE>){
        my@tmp=split(/<>/,$_);
        @{$USER{$tmp[$REC{User}{UserNum}]}}=@tmp;
    }close(FILE);
}my$char='(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])';
my$file=($FORM{Tfile} eq 'User')?"$UserDir/user.cgi":"$DataDir/data/data.cgi";
my$file=($FORM{Tfile} eq 'User')?"$UserDir/user2.cgi":"$DataDir/data/data.cgi";
my$file=($FORM{Tfile} eq 'User')?"$UserDir/user3.cgi":"$DataDir/data/data.cgi";
my$file=($FORM{Tfile} eq 'User')?"$UserDir/user4.cgi":"$DataDir/data/data.cgi";
&FileOpen('SEARCH',$file);
while(<SEARCH>){ $found=1;
    ($FORM{SearchMax} and @HitNums>=$FORM{SearchMax}) and last;

********************************************************************************
foreach $i ('',2,3,4) {
if(open(FILE,"user$i?.cgi") { &Error("ファイルが開けません。"); }
foreach(<FILE>) { @{$USER{$tmp[$REC{User}{UserNum}]}}=split(/<>/,$_); }
close(FILE);
}
これで、@{$USER{$tmp[$REC{User}{UserNum}]}}に4ファイル全てのデータが入ります。
こんなんで参考になりますでしょうか。
********************************************************************************

書いて頂いたソースはどこからどこまで該当するのでしょうか?
お手数ですが教えて頂けないでしょうか?

プロバイダ参照:
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:perlediter
FTPソフト:ffftp
サーバ移転:していない
改造:している
CGI習熟度:advanced

回答者 しあわせのツボ  [削除]  投稿日 2004/5/6(木) 23:09:42
元はこれですね。
http://www.rescue.ne.jp/CGI-BBS/cgi/perl/20040504155345.shtml
(書いておかないと散逸してしまうので)

一部書き落としがありましたので再掲。
「せっかく書いた」sub FileOpenを使いたいなら以下のように。
foreach $i ('',2,3,4) {
&FileOpen('FILE',"user$i?.cgi");
foreach(<FILE>) { @{$USER{$tmp[$REC{User}{UserNum}]}}=split(/<>/,$_); }
close(FILE);
}

これで、元の&FileOpen〜からclose(FILE);までを置き換えられます。
my $char以降は何をしたいのかよくわからないので、動いているならそのままで。
my $fileが多数ありますが、myの指示は最初にひとつ書くだけにしましょう。
質問者 バカボン  [削除]  投稿日 2004/5/7(金) 10:29:02
ありがとうございます。さっそく移植して試してみようと思います。

返信(回答)する

 


Web裏技