[질문] 패턴일치 관련.
 
  안녕하세요. 저는 이진성이라고 합니다.
다음과 같은 문제로 문의 드립니다.
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$/){
이렇게 하면 되지 않을까요?
제가 잘못 알았다면 리플 주세요 ^^;
감사합니다. 설명해주신 문장으로 해결 되었습니다. [본문내용무
.
댓글 달기