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

 
Previous Post 자바 버전 설명 - Java Version[펄/Perl] 실행시 옵션(인수; 아규먼트 Argument; 파라미터 Parameter)...Tab 문자의 아스키 코드 / 탭문자의 이스케이프 시퀀스(Escape Sequence)게임/Chess] 체스 묘수풀이 문제 많은 곳 - Chess Problem[자바] javac (자바 컴파일러; javac.exe) 실행법; 패스 추가윈도우XP] 기존의 패스(Path) 환경변수에, 새 경로(디렉토리; 폴더) 추가하는 법Perl기초/펄] 문자열에서 엔터(Enter)키 치기 / 다음줄로 행갈이 / 개행문자 입력...노턴 고스트 드라이브 이름, 1:1 1:2 라는 NTFS 파티션 - Norton Ghost...리눅스/유닉스에서의 foo 라는 문자열은 무엇입니까? - Linux / Unix QnA구글에 블로그 만들기 / 구글의 공식 블로그는? - Google Blog

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

Tuesday, August 29, 2006
스폰서 링크

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) 덤프; 디버그용

☞ Perl

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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