[질문] 패턴일치 관련.
안녕하세요. 저는 이진성이라고 합니다.
다음과 같은 문제로 문의 드립니다.
Perl 로 CGI 를 만들면서 생긴 문제 입니다.
while(($ucnumber,$ucname)=$uc->fetchrow){
push(@ucnames,$ucname);
push(@ucompany,$ucname);
push(@ucompany,$ucnumber);
}
%ucompany=@ucompany;
foreach $temp(keys(%ucompany)){
while(param("company") =~ /$temp/){
$ucompany=$ucompany{$temp};
print $ucompany;
last;
}
}
코드는 위와 같고, 문제가 되는 부분은
foreach $temp(keys(%ucompany)){
while(param("company") =~ /$temp/){
$ucompany=$ucompany{$temp};
print $ucompany;
last;
}
* $temp Database 에서 꺼내온 값.
param("company") 웹페이지에서 사용자로 부터 받은값.
Database 에 다음과 같은 데이터가 들어 있고, 패턴일치 검사를 하면
2개의 값을 리턴 되어 집니다.
Database 에 들어 있는 값.
1 PHONE
2 PHONE BLUE
3 PHONE RED
A. 사용자로 부터 입력 받은 값이 PHONE 일 경우 반환된 키 값은 1
B. 사용자로 부터 입력 받은 값이 PHONE RED 일 경우 키 값을 반환 받으
면 3과 1을 받음.
문제가 되는 경우 B 에서 제가 받고자 하는 키 값은 3입니다. 패턴일치
의 greedy 한 특성으로 생기는 문제 같은데, 흠 위 패턴 공식을 바꾸는 것
으로 해결할 방법이 있는지 알고 싶습니다.
- 이글을 끝까지 읽어 주셔서 감사합니다.
Re: [질문] 패턴일치 관련.
foreach $temp(keys(%ucompany)){
while(param("company") =~ /$temp/){
$ucompany=$ucompany{$temp};
print $ucompany;
last;
}
질문의 요지가 제 생각과 같다면,
while(param("company") =~ /^$temp$/){
이렇게 하면 되지 않을까요?
제가 잘못 알았다면 리플 주세요 ^^;
감사합니다. 설명해주신 문장으로 해결 되었습니다. [본문내용무
.
댓글 달기