CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): 파란거북 (...)
날 짜 (Date): 2004년 7월  5일 월요일 오전 09시 30분 43초
제 목(Title): Perl regular expression


펄 레귤러 익스프레션 써서, 스크립트를 짜고 있는데,
이해되지 않는 로직에러가 발생해서,
제 궁금증을 보여주는 간단한 테스트 코드를 만들어봤습니다.
아래의 예시에서, 파일의 내용은 
=============
...
=============
의 ...에 해당되는 부분입니다.

어쨌든 궁금증의 내용은, [^\s"]+  라는 expression이 
whitespace나 따옴표가 아닌 character들의 하나 혹은 그
이상의 나열이어야 하는데, 뭔가 문제가 있어서요.

try.pl
================
#!/usr/bin/perl
 
open TEST, "<testfile";
 
while(defined($line=<TEST>)) {
  print "line is :$line";
  if ($line =~ m%([^\s"]+)%) {
    print "good girl\n";
    print $1;
  } else {
    print "not nice\n";
  }
}
=================

testfile
=================
<a href="abc">IBM</a>
<a href="efg">IBM</a>
=================

이렇게 파일 만들고,

perl try.pl

이라고 치면,

good girl
이 프린트되기를 기대하는데,
not nice
가 프린트 됩니다.

많은 도움 부탁드립니다.

(참고로 위의 regular expression에서 \s 대신 그냥 스페이스 하나를 
쓰면 제대로 working합니다.
참고로, 펄은 리눅스 9에 깔린, v5.8.0 이라고 되어있습니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.