Friday, December 28, 2012

Perl의 regular expression 을 이용해 만든 trim 함수

앞뒤의 whitespace 를 trim 해버리는 코드
 $_ = "  This is my pen. ";  
 print "[" . mytrim() . "]\n";  
 
 sub mytrim {   
      s/^\s+|\s+$//g;  
      return $_;  
 }  
맨 뒤의 g 를 안하면 앞부분만 trim 되고 끝나버린다.

최적화
속도를 높이려면 다음 코드보다는
 s/^\s+|\s+$//g;  
다음 코드를 써서 두 스텝으로 실행하는게 빠르다고 한다.
 s/^\s+//;  
 s/\s+$//;  
그 이유는 ^와 $에 의해 위치가 fixed 되어 있는 regular expression 이 더 효율적으로 동작하기 때문.
출처 : Why is s/^\s+|\s+$//g; so much slower than two separate substitutions?

No comments:

Post a Comment