Perl 문자열 검색과 디렉토리 조작 사용 방법 예제

코멘트

프로그램을 작성할 때에 소스 내용을 알아보기 쉽도록 메모를 남겨두는 경우가 있습니다.

이것을 코멘트 또는 주석이라고 부릅니다.

Perl에서는 샾(#)기호로 코멘트를 작성할 수 있습니다.

프로그램이 실행될 때는 무시됩니다.

이것을 [코멘트 아웃]이라고 합니다.

$data = 'I am a boy'

# 데이터를 출력
print $data;

 

위 코드의 경우 3행을 코멘트로 취급하고 있습니다.

코멘트는 다음과 같이 소스 뒤에 붙여서도 사용할 수 있습니다.

$data = 'I am a boy'

print $data;	# 데이터를 출력

 

그리고 여러행을 코멘트 하는 경우에는 다음과 같이 =pod =cut을 이용하여 여러행을 코멘트 아웃 할 수 있습니다.

=pod
 여기서부터
 복수의행을
 코멘트 합니다.
=cut

$data = 'I am a boy';

print $data;

 

결과

> I am a boy

 

단, 위의 방법은 정식적인 방법은 아닙니다.

여러행을 코멘트 하고 싶은 경우에는 각 행마다 샾(#)을 사용해서 코멘트 아웃하는 것이 기본입니다. =pod =cut에 관해서는 프로그래밍이나 테스트 등에 일시적으로 여러 행을 코멘트 아웃을 하고 싶을 때 자주 사용되는 방법입니다.

 

문자열 검색

문자열을 검색하는 함수로 index함수와 rindex함수가 있습니다.

1. index함수

  구문
 index(전체 문자열, 검색 문자열, 시작 위치)
 index(전체 문자열, 검색 문자열)

 

[전체 문자열]안에서 [시작 위치]의 위치부터 [검색 문자열]이 해당되는 최초의 위치를 반환합니다.

[시작 위치]를 생략하는 경우에는, 맨 앞부터 검색합니다.(맨 앞 위치는 0)

검색 결과가 없는 경우에는 -1을 반환합니다.

 

2. rindex 함수

  구문
 rindex(전체 문자열, 검색 문자열, 시작 위치)
 rindex(전체 문자열, 검색 문자열)

 

[전체 문자열]안에서 [검색 문자열]이 해당되는 최종 위치를 반환합니다.

[시작 위치]를 사용하는 경우에는, 가장 오른쪽 위치를 지정하게 됩니다.

검색 결과가 없는 경우에는 -1을 반환합니다.

코드 예 -1

$str = "ABCDEF";
$sub = "CD";

$find = index($str, $sub);

if ($find >= 0) {
	$find++;
	print "앞 $find번 째에서 검색 되었습니다. \n";
} else {
	print "검색 결과가 없습니다. \n";
}

 

결과

> 앞 3번 째에서 검색 되었습니다.

코드 예 -1에서는 최초에 발견된 부분을 표시하고 있지만, 문자열 안에서 해당되는 모든 곳을 표시하고 싶은 경우는 다음과 같이 할 수 있습니다.

 

코드 예 -2

$str = "apple orange banana";
$sub = "a";

while ( ($find = index($str, $sub, $find) ) >= 0 ) {
	$find++;
	print "$find번째에서 검색\n";
}

 

결과

> 1번째에서 검색
> 9번째에서 검색
> 15번째에서 검색
> 17번째에서 검색
> 19번째에서 검색

 

 

문자열 조작

문자열을 조작하는 함수로는, substr함수가 있습니다.

문자열의 취득, 변환, 삭제, 추가 등을 할 수 있습니다.

구문
 substr(전체 문자열, 시작 위치, 문자 길이)
 substr(전체 문자열, 시작 위치)

 

[전체 문자열]에서 부분 문자열을 취득합니다.

부분 문자열은, [시작 위치]부터 시작합니다. (맨 앞 위치는 0)

[시작 위치]가 음수일 경우 문자열의 맨 뒤에서부터 [문자 길이]만큼 취득합니다.

[문자 길이]를 생략하는 경우 문자열의 맨 뒤까지의 모든 문자열을 반환합니다.

 

문자열 취득

$word = "icecoffe";
$str = substr($word, 0, 3);
print "$str\n";

 

결과

> ice

 

substr함수를 사용해서 문자열을 변경하거나 추가할 수 있습니다.

 

문자열 변경

$word = "icecoffe";
substr($word, 0, 3) = "hot";
print "$word\n";

 

결과

> hotcoffe

 

문자열 삭제(앞 부분 삭제)

$word = "icecoffe";
substr($word, 0, 3) = "";
print "$word\n";

 

결과

> coffe

 

문자열 삭제(뒷 부분 삭제)

$word = "icecoffe";
substr($word, -5, 5) = "";
print "$word\n";

 

결과

> ice

 

문자열 변형

문자열을 변형하는 함수로 printf함수와 sprintf함수가 있습니다.

문자열이나 숫자를 지정하는 서식으로 변환을 할 수 있습니다.

 printf함수는 변형한 값을 파일 핸들러로 출력하고, sprintf함수는 변형한 값을 반환합니다.

함수구문내용
 printf함수 printf(서식, 리스트) [리스트]의 값을 [서식]으로 변환하고 파일 핸들러에 출력
 sprintf함수 sprintf(서식, 리스트) [리스트]의 값을 [서식]으로 변환하고 그 값을 반환

 

구문의 서식에 코드는 다음과 같습니다.

코드의미
 %c 문자
 %s 문자열
 %d 10진수
 %e 부동 소수점(지수 형식)
 %f 부동 소수점(고정 소수점 형식)
 %e 부동 소수점(콤팩트 형식)
 %o 8진수
 %x 16진수
 %X 16진수(대문자 사용)

 

코드 예

$hour = 5;
$min = 12;
$sec = 6;

$time = sprintf("%02d:%02d:%02d", $hour,$min,$sec);
print "$time\n";

 

결과

> 05:12:06

댓글