mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Tuesday, August 29, 2006

펄/Perl ] split 연산자로, 문자열 (단어별로) 분리하여 배열에 저장 - split 함수 사용법


split은, 함수(Function)처럼 보이지만, 실은 함수가 아니라 연산자(Operator)입니다.

어떤 문자열을 "구분 기호"로써 분리하여, 배열 속에 차곡차곡 나누어 담는 기능을 가집니다.

사용법을 한글로 표현하자면 이렇습니다:
@배열 = split /분리자/, $문자열;




이렇게
@_ = split;

분리 기호 (분리자 Separator) 와, 분리할 문자열을 생략할 수 있습니다. 그러면, 디폴트 변수인 $_ 의 내용에서 공백을 기준으로 분리합니다.

다음의 3개는 동일한 역할을 합니다.
@_ = split;
@_ = split / /, $_;
@_ = split ' ', $_;
@_ = split /\s+/, $_;

또한 /\s+/ 이렇게 분리자를 정규식 / 정규표현식 (Regular Expressions; Regex) 으로 지정할 수도 있습니다.



다음의 예제를 보면 쉽게 알 수 있습니다. "둥글고 하얀 어떤 거대한..." 등의 문장을 공백을 기준으로 분리하면, 각 단어별로 분리되는데, 그 단어들을 배열 속에 집어 넣고, 그 배열의 내용을 DumpArray 서브루틴을 사용해 알아보기 쉽게 출력합니다.


split 연산자(x함수) 사용 예제


#!/usr/bin/perl
use strict; use warnings;


# 디폴트 변수인 $_ 의 내용을 분해하여, 디폴트 배열인 @_ 에 넣어 출력
$_ = "둥글고 하얀 어떤 거대한 무엇이 자꾸만 떠올랐는데 마치 이 세상의 것이 아닌 것처럼 여겨졌다.";
@_ = split;
&DumpArray(@_);



# 변수 $s 의 내용을 분해하여, 배열 @foo 에 넣어 출력
my $s = "무슨 기척을 느끼고 뒤돌아보았더니 아까 그 행인이 산모퉁이를 황급히 돌아가고 있었다.";
my @foo = split / /, $s;
&DumpArray(@foo);


# 쉼표로 분리된 변수 $s2 의 내용을 분해하여, 배열 @foo2 에 넣어 출력
my $s2 = "산모퉁이,너머의,먼,하늘에는,희미한,구름이,안개처럼,끼어,있었다.";
my @foo2 = split /,/, $s2;
&DumpArray(@foo2);



#################################################
# 배열 요소를 출력하는 서브루틴
sub DumpArray {
   printf "Array Total Elements: %d\n", $#_ + 1;
   for (my $i = 0; $i <= $#_; $i++) {
      printf "[%d] = \"$_[$i]\"\n", $i;
   }
}


"산모퉁이,너머의,먼,하늘에는,희미한..." 이 부분은 쉼표로 분리된 문자열을 분해하는 예제입니다.
split /,/, $s2;
이렇게 분리자로서 쉼표(,)을 넣어주면 됩니다.



위의 예제를 실행한 결과:
D:\Z>0.pl
Array Total Elements: 14
[0] = "둥글고"
[1] = "하얀"
[2] = "어떤"
[3] = "거대한"
[4] = "무엇이"
[5] = "자꾸만"
[6] = "떠올랐는데"
[7] = "마치"
[8] = "이"
[9] = "세상의"
[10] = "것이"
[11] = "아닌"
[12] = "것처럼"
[13] = "여겨졌다."
Array Total Elements: 11
[0] = "무슨"
[1] = "기척을"
[2] = "느끼고"
[3] = "뒤돌아보았더니"
[4] = "아까"
[5] = "그"
[6] = "행인이"
[7] = "산모퉁이를"
[8] = "황급히"
[9] = "돌아가고"
[10] = "있었다."
Array Total Elements: 9
[0] = "산모퉁이"
[1] = "너머의"
[2] = "먼"
[3] = "하늘에는"
[4] = "희미한"
[5] = "구름이"
[6] = "안개처럼"
[7] = "끼어"
[8] = "있었다."

D:\Z>


평범한 문장(문자열)이, 단어별로 분해된 것을 알 수 있습니다.


split 연산자의 정반대 역할을 하는 join 함수 사용법입니다: ▶▶ Perl/펄] join 함수 사용법 예제; join Function Example

▶▶ [Perl] 배열(Array) 덤프; 디버그용




tag: perl
Perl | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top