古いバージョン (5.8x?) から LWP 6.04 にアップグレードした後、永久に実行されていた分散アプリケーションで使用されている一部のコードが壊れ始めていることに気付きました。POST での \n の処理の変更にたどり着きました。
クライアントで:
$post_data{'good'} = qq(This is a text line);
$post_data{'bad'} = qq(This is a first line\nThis is a second line);
my $ua = LWP::UserAgent->new();
my $response = $ua->post( $url, \%post_data );
return undef if (!defined $response);
サーバー上:
my $good = $q->param('good');
my $bad = $q->param('bad');
クライアントがサーバーを実行すると、次のようになります。
サーバー側の $good は、予想どおり qq(これはテキスト行です) になります。ただし、$bad は qq になります (これは 1 行目です\r\nこれは 2 行目です)。
LWP::UserAgent の以前の動作を利用した大量のコードを書き直して再展開することなく、この「役立つ」置換を回避する方法はありますか?