CGI.pm의 약간 수정 된 버전을 사용하는 Perl로 작성된 사용자 정의 사이트가 있습니다. 서버 업데이트 중에 CGI.pm이 업데이트되면 덮어 쓸 수 있습니다. 내 목표는 사이트에 영향을주지 않고 서버를 업데이트 할 수있게하는 것입니다. 즉, 수정 된 CGI.pm에 의존하는 코드를 변경하는 것입니다. 불행하게도 나는 펄 구문이나 모범 사례에 익숙하지 않다.CGI.pm에서 사용자 정의 코드 가져 오기
이--- CGI.pm.orig Tue Nov 7 12:14:09 2006
+++ CGI.pm Tue Nov 7 12:13:29 2006
@@ -3386,7 +3386,7 @@ sub read_multipart {
if (defined $self->{'.upload_hook'})
{
$totalbytes += length($data);
- &{$self->{'.upload_hook'}}($filename ,$data, $totalbytes, $self->{'.upload_data'});
+ &{$self->{'.upload_hook'}}($filename ,$data, $totalbytes, $self->{'.upload_data'}, $param, $header{'Content-Type'});
}
print $filehandle $data if ($self->{'use_tempfile'});
}
이 DIFF에 의존하는 코드는 다음과 같습니다 :
my %file_hash =();
my $page = new CGI(\&file_reader, \%file_hash, 0);
my $session = &get_session($page);
foreach my $param_name (keys %file_hash) {
my $notes_param = $param_name . "_notes";
&store_file($file_hash{$param_name}, $page->param($notes_param),
&get_session_name($session));
}
여기
수정 된 CGI.pmn의 DIFF (줄 번호는 CGI.pm의 최신 버전에서 꺼져)입니다
diff가 없으면 파일을 저장할 때 $ param_name 변수가 비어있는 것으로 보입니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 이전에 말했듯이 내 주요 목표는 서버 업데이트를 단순화하는 것입니다. 어떤 방법이에 하나
A) (바람직))) CGI.pm B의 수정 된 버전없이 제대로 작동하려면 %의 file_hash를 얻을 수 CGI.pm 업데이트를 방지 (이것은 나쁜 생각
CGI.pm은 혼란스럽고 당신 말이 맞습니다. 수정 된 버전이 없으면 더 낫습니다. diff에 대해서''$ param' 변수를 참조하는 다른 부분이 있습니까? 무엇이 포함되어 있습니까? 더 나은 방법은 수정 된 CGI를 스크랩하고 문제를 살펴 보는 것입니다. 무슨 일을 하려니, 왜'$ file_hash {param_name}'변수가 필요한가요? –