펄에서 아주 유용한 함수는 split으로서 이 함수는 문자열을 쪼개 배열로 저장한다. 이 함수는 정규식을 사용할 수 있으며, 특별히 지정하지 않는다면 $_ 변수에대해 동작한다.
split 함수는 다음과 같이 사용된다:
$info = "김희선:여배우:22:목용탕집";
@personal = split(/:/, $info);
print "@perlsonal\n";
다음 코드는 전체적으로 동일한 효과를 낸다.
@personal = ("김희선", "여배우", "22", "목용탕집");
$_ 변수에 정보가 저장되어 있다면 바로 다음과 같이 사용할 수 있다.
@personal = split(/:/);
필드가 임의의 개수의 콜론(:)에의해 분리된다면 이것을 처리하기위해 RE 코드를 사용할 수 있다.
$info = "김희선:여배우::22:::목용탕집";
@personal = split(/:+/, $info);
print "@perlsonal\n";
은 다음과 같다.
@personal = ("김희선", "여배우", "22", "목용탕집");
그러나
$info = "김희선:여배우::22:::목용탕집";
@personal = split(/:/, $info);
print "@perlsonal\n";
은 다음과 같다.
@personal = ("김희선", "여배우","", "22","","", "목용탕집");
단어는 문자로 쪼개질 수 있으며, 문장은 단어로, 구는 문장으로 쪼개질 수 있다:
@chars = split(//, $word);
@words = split(/ /, $sentence);
@sentences = split(/\./, $paragraph);
첫번째 경우 Null 문자는 각각의 문자 사이를 일치시키며, @chars 배열은 문자의 배열이된다.
연습 - 방명록
사용자의 입력은
name1=value1&name2=value2&name3=value3&name4=value4
와 같은 형식으로 CGI에 전달된다. 따라서 $query를 split 함수로 반복적으로 사용해서 QUERY_STRING을 쪼개면 valueX의 값을 얻을 수 있다.
split 함수와 배열을 사용해서 사용자의 입력을 디코딩하고 디코딩한 결과를 다음과 같은 형식으로 출력하도록 guest.cgi를 변경한다.
이름: Jae-Geun,+Kim
전자우편: [email protected]
홈페이지: http://qaos.com/
의견: 의견은 무신.
디코딩하는 부분은 다음과 유사할 것이다.
@query = split(/&/, $query);
($temp, $name) = split(/=/, $query[0]);
($temp, $emal) = split(/=/, $query[1]);
($temp, $home) = split(/=/, $query[2]);
($temp, $comment) = split(/=/, $query[3]);