PERL
Use of uninitialized value in substitution
고요한하늘...
2014. 2. 4. 13:09
1 my ($key, $val) = split(/\t/);
2 $val =~ s/\{\(//;
3 $val =~ s/\)\}//;
4 my @fields = split(/\),\(/, $val);
위와 같은 코드에서 아래와 같은 에러가 발견되었을 경우
Use of uninitialized value in substitution (s///) at
초기화 되지 않은 변수가 사용되었다는 경고 메세지인데
이유는 단순하다
1번 라인에 의해 값이 할당된 val에 아무런 것도 들어가지 않았을 경우
즉 split에 의해 리턴되는 값이 없을때 발생하는 경고 메세지이다.
회피하는 방법은 간단히
2,3,4 번행을
if( $val ) 문으로 감싸면 해결된다.
1 my ($key, $val) = split(/\t/);
2 if( $val )
3 {
4 $val =~ s/\{\(//;
5 $val =~ s/\)\}//;
6 my @fields = split(/\),\(/, $val);
7 }