WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlでのファイルへの書き込み

0:[投稿] 野口 [2002/10/25 22:21 ][環境:WIN+IE UNIX系+Perl]

度々、お世話になります。
現在、ファイルの10個のデータを読み込み、例えばその何行目かの数$kazuの値を変更して、フォームにてCGIにわたし、以下のような条件の時にその行のデータを変更してファイルを更新しようとしています。10行目のデータの変更時は何も問題ないのですが、1行目から9行目までのデータを変更した場合、変更した行の次の行が消えてしまいます。どこに問題があるのか解らず悩んでいます。
問題箇所のご指摘を頂きたくお願い致します。
open TEMP,"<$d_file" || die "Could not open the file";
    @templine = <TEMP>;
    close TEMP;

open (OUT, ">$d_file") or die "Could not open the file";
   foreach (@templine) {
   ($oldpage,$oldgoods_id,$oldname,$oldprice,$oldsize,$oldpicture,$oldkazu,$oldcolor1,$oldcolor2,$oldcom1,$oldcom2) = split (/:=:/, $_);

        if ($oldgoods_id eq "$goods_id") {
    $oldpage   = $page;     $oldgoods_id = $goods_id;
    $oldname   = $name;     $oldprice    = $price;
    $oldsize   = $size;     $oldpicture  = $picture;
    $oldkazu  = $kazu;
    $oldcolor1 = $color1;   $oldcolor2   = $color2;
    $oldcom1   = $com1;     $oldcom2     = $com2;
    }
   print OUT "$oldpage:=:$oldgoods_id:=:$oldname:=:$oldprice:=:$oldsize:=:$oldpicture:=:$oldkazu:=:$oldcolor1:=:$oldcolor2:=:$oldcom1:=:$oldcom2";
   }
close (OUT);


1:[回答] バギンズ [2002/10/26 02:12 ]

本当に消えてますか?
変更した行の改行コードが抜けて、次の行が後ろにくっついていませんか?

書き込むときに

print OUT "$oldpage:=:$oldgoods_id:=:$oldname:=:$oldprice:=:$oldsize:=:$oldpicture:=:$oldkazu:=:$oldcolor1:=:$oldcolor2:=:$oldcom1:=:$oldcom2:=:\n";

という風に、最後に :=:\n を付けておくのが一番簡単ですっきりするかな。
(既に作ったファイルは行の最後に:=:が無いので、そのままでは使えません)


2:[完了] マイム野口 [2002/10/26 06:39 ]

バギンズ さん 有り難うございました。
ご指摘のとおりでした。
データは、変更した行の改行コードが抜けて、次の行が後ろにくっついました。
ご教示頂いたように訂正することで解決しました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World