날짜: 1996-03-13 | 글쓴이: 도아 | 6863 번 | 프린트 | 메일로보내기

펄을 배우자 - 제 10강 Split


펄에서 아주 유용한 함수는 split으로서 이 함수는 문자열을 쪼개 배열로 저장한다. 이 함수는 정규식을 사용할 수 있으며, 특별히 지정하지 않는다면 $_ 변수에대해 동작한다. split 함수는 다음과 같이 사용된다:
$info = "김희선:여배우:22:목용탕집";
@personal = split(/:/, $info);
다음 코드는 전체적으로 동일한 효과를 낸다.
@personal = ("김희선", "여배우", "22", "목용탕집");
$_ 변수에 정보가 저장되어 있다면 바로 다음과 같이 사용할 수 있다.
@personal = split(/:/);
필드가 임의의 개수의 콜론(:)에의해 분리된다면 이것을 처리하기위해 RE 코드를 사용할 수 있다.
$_ = "김희선:여배우::22:::목용탕집";
@personal = split(/:+/);
은 다음과 같다.
@personal = ("김희선", "여배우", "22", "목용탕집");
그러나
$_ = "김희선:여배우::22:::목용탕집";
@personal = split(/:/);
은 다음과 같다.
@personal = ("김희선", "여배우","", "22","","", "목용탕집");
단어는 문자로 쪼개질 수 있으며, 문장은 단어로, 구는 문장으로 쪼개질 수 있다:
@chars = split(//, $word);
@words = split(/ /, $sentence);
@sentences = split(/\./, $paragraph);
첫번째 경우 Null 문자는 각각의 문자 사이를 일치시키며, @chars 배열은 문자의 배열이된다. 연습 자연어 처리에서 유용한 도구는 일치성이다. 일치성으로 특정 문자열은 문장 어디에 문자열이 있든 인접한 문맥내에 출력될 수 있다. 예를들어 the라는 문자열을 일치시키는 일치성 프로그램은 다음과 비슷한 출력을 만들 것이다. 목적 문자열의 발생이 수직으로 정렬되는방법에 주의하기 바란다.
discovered (this is the truth) that when he
t kinds of metal to the leg of a frog, an e
rrent developed and the frog's leg kicked,
 longer attached to the frog, which was dea
normous advances in the field of amphibian
ch it hop back into the pond -- almost.  Bu
ond -- almost.  But the greatest Electrical
ectrical Pioneer of them all was Thomas Edi
이번의 연습은 그러한 프로그램을 작성하는 것이다. 다음은 몇몇 팁이다:
  • 전체 파일을 읽어 배열로 저장한다(이 것은 분명 파일이 큰경우 유용하지는 않다. 그러나 여기에서는 고려하지 않는다). 배열내의 각 항목은 파일의 한 행일 것이다.
  • chop 함수를 배열에대해 사용할 때 chop 함수는 배열내 각항목의 마지막 문자를 제거한다.
  • $text = "@lines";와 같은 문장으로 전체문장을 결합한다.
  • 목적 문자열을 사용해서 이 문장을 다시 쪼갠다(예, 이전 예에서 콜론(:)을 목적 문자열로 대치한다) 그러면 목적 문자열 사이의 모든 문자열을 배열로 저장하게된다.
  • 각 배열요소에 대해 차례로 배열 요소를 출력하고, 목적 문자열을 출력하고, 다음 배열 요소를 출력한다.
  • 배열 @food의 마지막 배열 첨자는 $#food로 참조한다.
이 것은 상당히 좋은 프로그램이지만 목적 문자열이 수직으로 정렬되지는 않는다. 문자열을 정렬하기위해 substr 함수가 필요하다. 다음은 이 함수를 사용하는 예이다.
substr("Once upon a time", 3, 4);	# "e up"을 리턴
substr("Once upon a time", 7);		# "on a time"을 리턴
substr("Once upon a time", -6, 5);	# "a tim"을 리턴
첫번째 예는 위치 3에서 시작해서 길이 4인 부분문자열을 리턴한다. 문자열의 첫글자의 참조번호는 0이라는 것을 기억하기 바란다. 두번째 예는 길이를 생략하면 문자열의 우측 끝까지의 부분문자열을 리턴한 다는 것을 보이고 있다. 세번째 예는 음의 참조번호를 사용함으로서 문자열의 끝에서부터 참조할 수 있다는 것을 보이고 있다. 이 것은 끝에서 6번째 문자열에서 길이가 5인 문자열을 리턴한다. 문자열의 시작을 초과하는 음의 참조 번호를 사용한다면 펄은 아무 것도 리턴하지 않으며, 경고를 출력한다. 이러한 것을 피하기위해 앞서 언급한 x 연산자를 사용해서 문자열을 채워넣을 수 있다. 예를들어 표현식, (" "x30)는 30개의 공백을 만든다.


다음글: 펄을 배우자 - 제 11강 연관배열 (6155)1996-03-14
이전글: 펄을 배우자 - 제 9강 대치와 변환 (6309)1996-03-12

세상사는 이야기

  • 바보도 할 수 있는 War >
  • 북마크에도 확장 아이 >
  • 크롬은 가라, 비발디가 >
  • 감히 아이폰 관리의 최 >
  • 디지털 노마드의 편집 >
  • [블로그 복귀 알림] 새 >
  • 오타도 즐거운 안드로 >
  • 최고의 OCR 어플, Text >
  • 누구나 할 수 있는 순 >
  • 듀오백 컨텐츠 허브, >


  • RSS 구독 (익명 | 회원 | 강좌 | 포럼)
    (C) 1996 ~ 2014 QAOS.com All rights reserved.