이전 버전 (5.8x?)에서 LWP 6.04로 업그레이드 한 후 분산 된 응용 프로그램에서 사용 된 일부 코드가 영원히 부서지기 시작했다. 나는 그것을 POST에서 \ n 처리의 변화를 추적했다. 예상대로 될 수있을 테니까요 서버 측LWP :: UserAgent 6.04, 내용의 일부로 n POST 및 새로운 동작
$ 좋은 : 서버에서
$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');
는 다음 얻는다 qq (이것은 텍스트 행입니다). 그러나 $ bad는 qq가됩니다 (이것은 첫 번째 줄입니다. \ r \ n 두 번째 줄입니다).
LWP :: UserAgent의 이전 동작을 활용 한 방대한 양의 코드를 다시 작성하고 다시 배포하지 않고도이 "유용한"대체 방법을 피할 수 있습니까?
음, 코드와 RT 메시지 물마루가는 후 다시 업데이트를 압연 이외의 해결책이 없어 보인다. 변경 사항을 명확하게 문서화하지 않고 모듈, 특히 널리 사용되는 모듈의 기본 동작을 변경하면 기존 코드를 손상시킬 가능성이 매우 높다는 점만 언급 할 수 있습니다. –