Wednesday, November 01, 2006
Perl,펄] 매개변수(인수) 받아 배열 만들기: Arg To Array
매개 변수를 배열로 만들어줄 필요는 없고, 이미 기본적으로 만들어져 있습니다.
펄 프로그램 실행할 때, 뒤에 붙여 주는 옵션들은
@ARGV
라는 이름의 배열로 항상 존재합니다.
그리고 함수(서브루틴)에 넘겨주는 인수(파라미터)들은
@_
라는 이름으로, 함수 내에서 항상 사용할 수 있습니다. @_ 는 "디폴트 배열"이긴 하지만, 함수 내에서는 그 함수가 받은 인수들의 목록을 가지고 있는 배열이 됩니다.
@_ 에서 shift 로 맨 좌측의 요소를 하나씩 뽑아내서 사용할 수도 있고
@_ 의 첫번째 두번째 요소를 가리키는 변수인
$_[0]
$_[1]
...
등을 사용하여, 하나씩 직접 접근할 수도 있습니다.
파일명: 0.pl
참고로, =pod 와 =cut 은 블록 코멘트입니다.
위의 예제에서 shift 로 "똠방각하"를 뽑아내었기에, 이제 @_ 의 가장 첫번째 요소는 "QQQ"가 됩니다. 다시 shift를 사용하면 이제 "QQQ"가 뽑아져 나옵니다.
펄 프로그램 실행할 때, 뒤에 붙여 주는 옵션들은
@ARGV
라는 이름의 배열로 항상 존재합니다.
그리고 함수(서브루틴)에 넘겨주는 인수(파라미터)들은
@_
라는 이름으로, 함수 내에서 항상 사용할 수 있습니다. @_ 는 "디폴트 배열"이긴 하지만, 함수 내에서는 그 함수가 받은 인수들의 목록을 가지고 있는 배열이 됩니다.
@_ 에서 shift 로 맨 좌측의 요소를 하나씩 뽑아내서 사용할 수도 있고
@_ 의 첫번째 두번째 요소를 가리키는 변수인
$_[0]
$_[1]
...
등을 사용하여, 하나씩 직접 접근할 수도 있습니다.
매개 변수(인수;Parameter) 배열 다루는 예제
파일명: 0.pl
#!/usr/bin/perl
use strict; use warnings;
################################################
### < 프로그램 실행 옵션 배열 출력 >
=pod
0.pl IBM MS GOOGLE
이런 3개의 옵션들을 주어 실행했다면
=cut
print $_, "\n" foreach(@ARGV);
=pod
출력 결과:
IBM
MS
GOOGLE
=cut
print $ARGV[0], "\n"; # 첫번째 옵션 하나만 출력
# 결과: IBM
################################################
### < 함수(서브루틴) 파라미터 배열 출력 >
&test(111, 222, "레몬향기혜성", 4545);
sub test {
print $_, "\n" foreach(@_);
}
=pod
출력 결과:
111
222
레몬향기혜성
4545
=cut
################################################
### < 함수 첫번째 파라미터만 추출 >
&test2("똠방각하", "QQQ", 28737, 3.14);
sub test2 {
my $s = shift @_;
print $s, "\n";
}
=pod
출력 결과:
똠방각하
=cut
use strict; use warnings;
################################################
### < 프로그램 실행 옵션 배열 출력 >
=pod
0.pl IBM MS GOOGLE
이런 3개의 옵션들을 주어 실행했다면
=cut
print $_, "\n" foreach(@ARGV);
=pod
출력 결과:
IBM
MS
=cut
print $ARGV[0], "\n"; # 첫번째 옵션 하나만 출력
# 결과: IBM
################################################
### < 함수(서브루틴) 파라미터 배열 출력 >
&test(111, 222, "레몬향기혜성", 4545);
sub test {
print $_, "\n" foreach(@_);
}
=pod
출력 결과:
111
222
레몬향기혜성
4545
=cut
################################################
### < 함수 첫번째 파라미터만 추출 >
&test2("똠방각하", "QQQ", 28737, 3.14);
sub test2 {
my $s = shift @_;
print $s, "\n";
}
=pod
출력 결과:
똠방각하
=cut
참고로, =pod 와 =cut 은 블록 코멘트입니다.
위의 예제에서 shift 로 "똠방각하"를 뽑아내었기에, 이제 @_ 의 가장 첫번째 요소는 "QQQ"가 됩니다. 다시 shift를 사용하면 이제 "QQQ"가 뽑아져 나옵니다.
tag: perl
Perl | 펄
<< Home