perl 질문입니다.
글쓴이: lovethecorners / 작성시간: 금, 2005/10/28 - 3:56오전
예전에 먼저 일하는던 사람들이 만들어논 settings.pm 이라는 파일이있습니다. 그파일중에 다음과같은 sub 가있습니다.
sub parsequery { my ($buffer,@pairs,$name,$value,%fields); if(!($buffer = $ENV{'QUERY_STRING'})) { if(!defined $ENV{'CONTENT_LENGTH'}) { $ENV{'CONTENT_LENGTH'} = 0; } read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<([^>]|\n)*>//g; $value =~ s/<//g; $value =~ s/>//g; $fields{$name} = $value; } return %fields; }
사용되어지는 perl 스크립트에서는 아래와 같이 불러사용합니다.
. . use settings; my %fields = settings::parsequery; . .
지금 file uploadd 를 이용해서 만들고있는게있는데 뭔가 이상합니다.
form tag 를 다음과 같이 사용하면 필요한 data 조차 DB 에 전달이 안되네요...
<form method="post" action="dis-addadmins.pl" name="formaddrecord" enctype="multipart/form-data">
여기서 enctype 부분을 빼면 data 는 DB 에 입력이됩니다. 다시 enctype 을 넣으면 안되구요...그래서 제 생각에는 위의 sub 에서 뭔가하는것 같은데...잘 모르겠습니다. 혹시 아시는분 계신가 하고 이곳에 질문합니다. 아무래도 질문전달이 잘 안될거 같은 생각이 듭니다.. :cry:
Forums:
Re: perl 질문입니다.
parsequery 함수는 cgi를 사용할 때 stdin으로 들어 오는 폼 입력을 처리해 주는 역할을 합니다. 하지만 코드를 봤을 때, 이 코드는 multipart를 제대로 처리하지 못 합니다. (multipart로 들어 오는 request는 일반적인 POST 입력과 상당히 다릅니다) 따라서 코드를 새로 작성하거나 그러한 입력을 제대로 처리하는 함수를 찾아 보셔야 할 겁니다.
제가 펄을 그리 잘 아는 편은 아니지만, CPAN에 PCGI라는 모듈이 있군요. multipart도 제대로 지원하는 것 같습니다.
- 토끼군
Re: perl 질문입니다.
아 그렇군요 감사합니다. 저도 perl 잘모릅니다...이제 한달되었네요..
댓글 달기