• 締切済み

改行すると配列の置換ができない。

下のような感じで配列の置換をしているんですが、フォームから、改行付のテキストを送るとなぜか書き込む事ができません。誰か助けてください(>_; newtokkiを送っています。 &ReadParse(*in); $newtokki=$in{'newtokki'}; $newtokki=~ s/\r\n/<br>/g; if($in{'mode'} eq "save"){ &save; exit; } sub save { open(FILE, "< ../../home/recdata/data.dat"); @allbody=<FILE>; close(FILE); foreach $line (@allbody){ if ($line =~ /$id/){ if ($line =~ /$mail/){ ($tm,$date1,$date2,$ip,$name1,$name2,$furi1,$furi2,$add1,$add2,$add3,$tel1,$tel2,$tel3,$other1,$other2,$other3,$mail,$age1,$age2,$age3,$sex,$school,$license,$cname,$cy01,$cy02,$cy03,$cy04,$job,$cscale,$cform,$cpost,$cjob,$money,$changetime,$ap01,$ap02,$ap03,$wishmessage,$jobselect,$pr,$point,$keika,$tokki) = split(/\,/,$line); $line =~ s/$explain/$newexplain/; $line =~ s/$point/$newpoint/; $line =~ s/$keika/$newkeika/; $line =~ s/$tokki/$newtokki\n/; } } } open(FILE, "> ../../home/recdata/data.dat"); print FILE @allbody; close(FILE);

みんなの回答

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

> $newtokki=~ s/\r\n/<br>/g; これでは\r\nでないと置き換えがされません。 実際には\rだけだったり\nだけだったりもするわけです。(クライアント(ブラウザ)による) で、置き換えされずにファイルに書き込む時に一行の途中で改行されてしまっておかしなことになってしまうのでしょう。 そこで、 $newtokki =~ s/\r\n/<br>/g; $newtokki =~ s/\r|\n/<br>/g; としましょう。

関連するQ&A