うまく書き換えが出来ない。
記事修正画面部分の構築中です。
現在以下のような感じです。
sub edit3 {
# ログファイル読み込み
open (FILE, "$data") || &error("ファイルが開けません");
@data = <FILE>;
close(FILE);
# カウント退避
$count = shift (@data);
foreach $line (@data) {
($no,$n1,$a1,$com1,$n2,$a2,$com2,$n3,$a3,$com3,$n4,$a4,$com4,$n5,$a5,$com5,$name,$nani,$kou1,$kou2,$pass) = split(/<>/,$line);
chomp;
if ($in{'edit_no'} eq $no){
$line = "$no<>$in{'n1'}<>$in{'a1'}<>$in{'com1'}<>$in{'n2'}<>$in{'a2'}<>$in{'com2'}<>$in{'n3'}<>$in{'a3'}<>$in{'com3'}<>$in{'n4'}<>$in{'a4'}<>$in{'com4'}<>$in{'n5'}<>$in{'a5'}<>$in{'com5'}<>$in{'name'}<>$in{'nani'}<>$in{'kou1'}<>$in{'kou2'}<>$in{'pass'}<>\n";
} else {$line = "$no<>$n1<>$a1<>$com1<>$n2<>$a2<>$com2<>$n3<>$a3<>$com3<>$n4<>$a4<>$com4<>$n5<>$a5<>$com5<>$name<>$nani<>$kou1<>$kou2<>$pass<>\n";}
push(@new,$line);
}
# ログを更新
unshift(@new,"$count");
open(OUT,">$data") || &error("修正処理を失敗しました");
print OUT @new;
close(OUT);
&pass;
}
さて、この状態で複数ある情報の一番最新のものを更新すると、一番古いものまで書き換えられてしまいます。(1.2.3と記事があった場合、3を修正すると、3と1が修正されてしまう)
どこがおかしいのでしょうか?自分では間違っているようには見えないのですが…
修正・改善をお願いします。
お礼
ありがとうございます。 &&と||の使い方を勘違いしてたようです。 無事予定通りの動きをしてくれるようになりました。