perl 에서 패턴에 대한 질문입니다.

bestty의 이미지

펄스크립트를 작성하던중 도저히 풀리지 않는 문제가 있어서 고수닙들의 도움을 청합니다.

펄 패턴정의중에서 X 보다 크고 Y보다 작은 값일경우을 찾아내는 패턴을 정의할 수 있나요? 물론 X와 Y는 모두 INT타입일 경우에요.

예를 들어 10보다 크고 20보다 작은 값을 찾아내는 패턴을 등록할 수 있다면,
입력값이 15일경우 찾아낼것이고, 25의 경우 사이값이 아니기 때문에 일치하지 않겠죠?

이런것을 하고 싶은데 가능한지요?
그리고 가르켜주시는 김에 Perl관련해서 유용한 사이트도 추천 바랍니다.

감사합니다.

cjh의 이미지

패턴이란게 무엇을 말씀하시나요? 정규식을 말씀하신다면 그런 숫자 비교는 불가능합니다.

그냥 비교하시면($i >=10 && $i <=25)되지 않을까요?

--
익스펙토 페트로눔

ai의 이미지

권장되지 않는 표현이지만, 이렇게 하는 것이 가끔은 읽기 편한 코드가 되기도 합니다.

$ echo "ab:12:cd:34:56:78:9a:f0" | perl -pe 's/(\b\d+\b)(?{$m=($1>45)?"big":"small";})/$m/g'
ab:small:cd:small:big:big:9a:f0

다만 perldoc 에서 밝히고 있듯이

Quote:
WARNING: This extended regular expression feature is considered highly experimental, and may be changed or deleted without notice.

사용하지 않는 것이 좋습니다. 두 줄로 풀어쓰면 곤란하다라든지의 이유가 아니라면 최준호님이 말씀하신 것과 같이 \d+ 매치된 문자열을 산술비교하는 편이 맞습니다.

http://www.perldoc.com/perl5.8.0/pod/perlre.html

War doesnt determine whos right, just whos left.