Perl 에러 기초
에러를 보고하는 네가지 특수 변수: ( perlvar 참조 )
변수 | 영어이름 | 설명 |
$! | $ERRNO , $OS_ERROR | 운영체제 또는 라이브러리 호출로 발생한 에러 |
$? | $CHILD_ERROR | 마지막 wait() 호출의 결과값 |
$@ | $EVAL_ERROR | 마지막 eval() 호출로 발생한 에러 |
$^E | $EXTENDED_OS_ERROR | 운영체제에 따라 다른 에러정보 |
%! 해쉬 변수:
- 키는 errno.h에 있는 심볼 상수.
- 현재 $!의 값에 해당하는 키만 값을 갖고, 그 외의 키들은 값이 없다.
$? - 자식 프로세스의 종료 상태값
- 2바이트
- 상위 바이트는 자식 프로세스의 종료 상태값이 저장됨
- 하위 바이트중 하위7비트는 자식 프로세스가 시그널을 받아 종료했을 경우 해당 시그널 번호
- 하위 바이트중 상위1비트는 자식 프로세스가 코어 덤프를 했는지 여부
close( $pipe ) or die "Child error: $?";
wait( $pid ) or die "Child error: $?";
my $exit_value = $? >> 8;
my $signal = $? & 127;
my $core_dumped = $? & 128;
Perl 프로세스의 경우
- exit 뒤에 인자를 줄 경우 해당 인자의 값이 프로세스의 종료값이 된다.
- die의 경우는 종료값은 255. 이 값을 바꾸고 싶다면 END 블록에서 $?값을 바꿔준다.
END { $? = 37 if $? = 255 }
컴퓨터분류