Thursday, December 27, 2012

Perl에서 string의 문자 하나하나를 다루는 법

Perl의 기본 단위는 character가 아니라 string이기 때문에 캐릭터 단위로 다루기 위해서는 string을 분해해야 한다.
캐릭터 하나하나로 분해하는 방법 :
 @array = split(//, $string);  
바이트 단위로 분해하는 방법 :
 @array = unpack("C*", $string);  
루프를 돌려서 한 캐릭터씩 처리하는 법 :
   while (/(.)/g) { # . is never a newline here  
     # do something with $1  
   }  
응용 예) 스트링 내에 어떤 문자가 사용되었는지 알아내는 코드 :
 %seen = ();  
 $string = "an apple a day";  
 foreach $byte (split //, $string) {  
   $seen{$byte}++;  
 }  
 print "unique chars are: ", sort(keys %seen), "\n";  
결과는 unique chars are: adelnpy 와 같이 나온다.
다음과 같이 써도 동일.
 %seen = ();  
 $string = "an apple a day";  
 while ($string =~ /(.)/g) {  
   $seen{$1}++;  
 }  
 print "unique chars are: ", sort(keys %seen), "\n";  
출처 : Perl Cookbook : Processing a String One Character at a Time
키워드 : explode, characters

No comments:

Post a Comment