Friday, November 03, 2006
펄,Perl] defined 함수 사용 예제; 배열/변수 초기화 여부 확인 법
배열의 요소나, 어떤 변수가 초기화되어 있는지 아닌지 실시간으로 알아내야 할 때가 있습니다. 이때 defined 함수를 사용하면 됩니다. 초기화되어 있다면 참(true), 그렇지 않다면 거짓(false)의 논리값을 반환합니다.
즉, 다음과 같습니다:
* 변수의 값이나 배열의 요소가, 초기화되어 있는지 아닌지 판단
* 배열의 요소 개수를 넘어서는 첨자(인덱스)를 지정했는지 판단
if (!defined $s) {...
이렇게 앞에 느낌표를 하나 붙이면 defined 의 논리값을 반전시켜서 정반대의 결과를 낼 수 있습니다. 즉 "OK! 초기화되어 있군요"라는 값이 나옵니다.
즉, 다음과 같습니다:
* 변수의 값이나 배열의 요소가, 초기화되어 있는지 아닌지 판단
* 배열의 요소 개수를 넘어서는 첨자(인덱스)를 지정했는지 판단
PERL: defined 함수 사용 예제
#!/usr/bin/perl
use strict; use warnings;
my @a = qw/ 123 3.14 666 /;
print $a[2], "\n"; # 666
print $a[3], "\n"; # 666 다음 숫자 없기에 경고: Use of uninitialized value in print at D:\Z\0.pl line 7.
=pod
그러나 아래의 경우는 경고 없음, 왜냐하면 defined 를 사용하여,
$a[3] 의 값이 초기화되어 있는 경우 즉 존재하는 경우에만
출력하므로
=cut
if (defined $a[3]) {
print $a[3];
}
# 또는 이렇게 간단히 축약하며
print $a[3] if defined $a[3];
#################################
## 다른 예제
my $s; # 변수를 선언만 했지, 초기화하지 않았음
if (defined $s) {
print "OK! 초기화되어 있군요";
} else {
print "초기화되어 있지 않군요!\n";
}
# 결과: 초기화되어 있지 않군요!
use strict; use warnings;
my @a = qw/ 123 3.14 666 /;
print $a[2], "\n"; # 666
print $a[3], "\n"; # 666 다음 숫자 없기에 경고: Use of uninitialized value in print at D:\Z\0.pl line 7.
=pod
그러나 아래의 경우는 경고 없음, 왜냐하면 defined 를 사용하여,
$a[3] 의 값이 초기화되어 있는 경우 즉 존재하는 경우에만
출력하므로
=cut
if (defined $a[3]) {
print $a[3];
}
# 또는 이렇게 간단히 축약하며
print $a[3] if defined $a[3];
#################################
## 다른 예제
my $s; # 변수를 선언만 했지, 초기화하지 않았음
if (defined $s) {
print "OK! 초기화되어 있군요";
} else {
print "초기화되어 있지 않군요!\n";
}
# 결과: 초기화되어 있지 않군요!
if (!defined $s) {...
이렇게 앞에 느낌표를 하나 붙이면 defined 의 논리값을 반전시켜서 정반대의 결과를 낼 수 있습니다. 즉 "OK! 초기화되어 있군요"라는 값이 나옵니다.
tag: perl
Perl | 펄
<< Home