罪と罰++二律背反

* 国データ [#j3cc581b]

- ページ: [[罪罰改造板3]]
- 投稿者: [[マーレス]]
- 優先順位: 緊急
- 状態: 提案
- カテゴリー: エラーが出ます
- 投稿日: 2008-05-21 (水) 18:12:28
- バージョン: 

** メッセージ [#z1363bd8]
最近cdataが飛んでしまい国データがリセットされてしまうことがよくあります。
罪罰/国代表のログを移動させ何とか分散させて対処しようとconfig.cgiに$cdatfile2="./logdata/cdata2.cgi";を追加してlogdataのなかにcdata2.cgiを追加しました。
それでsystem.cgiのsub cdat_writeの中に$cdat2=〜;を作り、
sub cdata_openに

	open (IN,"$cdatfile2") || &error("国データファイルが開けませんでした",1);
	@cdat2 = <IN>;
	close(IN)    or die "Can't close   : $!";
を追加してみたんですがうまくできないので、他にどこを追加すればいいか教えていただけないでしょうか。
--------
- 同じsubの中に作るのでしたら、「IN」「OUT」を「IM」「AUT」とか別の文字に変更してみてはどうでしょうか? -- [[三毛]] &new{2008-05-22 (木) 09:37:02};
- sub cdat_writeとsub cdata_openともにIM,AUTのようにかえてみましたがまだうまく機能しないみたいです -- [[マーレス]] &new{2008-05-22 (木) 19:41:47};
- どのようにうまくいかないのかが分かると、レスしやすいかと思います。 -- [[三毛]] &new{2008-05-23 (金) 13:01:44};
- 申し訳ない。解りやすく言うとcn1とかcg1をcdat2に分けようとするとそのデータが消えてしまいます。表示画面には空白の状態になります。 -- [[マーレス]] &new{2008-05-23 (金) 17:38:29};
- 書いてないのですが、書き込みのほうはどのように追加していますか?>$cdat2=〜;以降の部分 -- [[三毛]] &new{2008-05-24 (土) 09:46:11};
- 指摘された通りに追加しましたので。
	open (AUT,">>$cdatfile2") || &error("open error:$cdatfile2",1);
	print AUT $cdat2;
	close(AUT)		or die "Can't close   : $!";
-- [[マーレス]] &new{2008-05-24 (土) 10:08:42};
- openの方の$CP{〜〜}とかの割り当ての方は? -- [[三毛]] &new{2008-05-24 (土) 13:54:51};
- この辺がおかしいのかな? 
sub cdata_open{
	open (IN,"$cdatfile") || &error("国データファイルが開けませんでした",1);
	@cdat = <IN>;
	close(IN)    or die "Can't close   : $!";
	open (IM,"$cdatfile2") || &error("国データファイルが開けませんでした",1);
	@cdat2 = <IM>;
	close(IM)    or die "Can't close   : $!";
	%CP = '';
	my @prats = split(/,/,$cdat[0]);
	foreach $prats (@prats){
		my($k,$v) = split(/;/,$prats);
		$CP{$k} = $v;
	}
	%CP = '';
	my @prats = split(/,/,$cdat2[0]);
	foreach $prats (@prats){
		my($k,$v) = split(/;/,$prats);
		$CP{$k} = $v;
	}

-- [[マーレス]] &new{2008-05-24 (土) 13:56:45};
- 入れ込んでしまっているので、@pratsと@CPが上書きされてますね^^;; >先に
 $set=$CP{'set'};
 $all_mem=$CP{'all_mem'};
 略
等を割り当てて、INを閉じてから、再びcdat2の方を呼び出し&割り当ててみると良いかと思います。
-- [[三毛]] &new{2008-05-24 (土) 15:10:17};
- ってか、割り当てる前に閉じちゃってません??^^;>close(IN)    or die "Can't close   : $!"; -- [[三毛]] &new{2008-05-24 (土) 15:15:28};
- こういう風になるんでしょうか?
	open (IN,"$cdatfile") || &error("国データファイルが開けませんでした",1);
	@cdat = <IN>;
	%CP = '';
	my @prats = split(/,/,$cdat[0]);
	foreach $prats (@prats){
		my($k,$v) = split(/;/,$prats);
		$CP{$k} = $v;
	}
	$set=$CP{'set'};
	$all_mem=$CP{'all_mem'};
	close(IN)    or die "Can't close   : $!";
	以下cdat2のopen
-- [[マーレス]] &new{2008-05-24 (土) 15:33:47};
- あとは、混在させたいというか、きっちり分けるのが難しいのであれば、@pratsと@CPもcdat2用の配列名にするかですね。>>@pratsと@CPの部分が何をしているのかを把握すれば、そんなに難しいことではないと思います。>混在も分けるのも -- [[三毛]] &new{2008-05-24 (土) 16:03:09};
- 追加してやってみたのですが、データがリセットされてしまいます。 -- [[マーレス]] &new{2008-05-24 (土) 17:35:40};

#comment

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS