Sunday, February 15, 2009

String split problem

스트링에 아래와 같은 문자열이 저장되어 있다고 할 때,

my $string=q/ man , girl, woman, boy, "man,woman", "girl,boy"/ ;

콤마(,) 를 기준으로 각 단어를 나눌려면 어떻게 해야할까?
이때, 따옴표(")로 묶여있는 단어 사이의 콤마는 무시 한다.

나누어
@result=( 'man', 'girl', 'woman', 'boy', 'man,woman', 'girl,boy' )
6개의 element로 저장하는 것이 최종 목표.

내 답은 아래와 같다. 더 깔끔하고, 간결한 코드가 있겠지?

my @result;
map { /"/?push @result,$_:push @result, split /,/,$_ } split /(".*?")/, $string;