ファイルの配列のリストデータ(変数)の特定の変数の値だけを変えたい。
サブルーチンの下のコードで表題の事をやろうとしていますが、
1)値が変わりません。($sinkou)
2)「エラー2','メッセージファイルが開けませんでした.」と表示されてしまいます。
3)モジュールで実現する方法がアったら教えてください。
よろしくお願いします。
sub SET_sinkou{
my($number,$name,$sinkou,@new,$line,$hanabi,$sinkou2);
$lockfile = "$tmp_dir$cmd{'log'}\.lock";
&lock;
if (!open(DB,$message_file)) { &Error('エラー1','メッセージファイルが開けませんでした.'); }
while(<DB>){
($number,$name,$sinkou) = split(/\t/,$_,3);
if($number == $_[0] ) {
$sinkou = $_[1];
$sinkou2 = $_[1]; #チェック用
$hanabi='花火'; #チェック用
$line=join(' ',$number,$name,$sinkou);
push @new,$line;
}
else{
$line=join(' ',$number,$name,$sinkou);
push @new,$line;
}
}
close DB;
if (!open(DB,">$message_file")) { &Error('エラー2','メッセージファイルが開けませんでした.'); }
foreach(@new){
print DB $_;
}
close(DB);
unlink($lockfile);
&Html_head;
print <<"EOF";
$body
<h2><strong>変更しました。$sinkou=$sinkou=2=$_[0]=$_[1]=$hanabi</strong></h2><p>
<!--$sinkou=$sinkou=2=$_[0]=$_[1]=$hanabiは値のチェック用-->
</body></html>
EOF
}