Tuesday, June 19, 2007

Perl programming common error

Array 변수를 for 문에서 사용시 for 문 안에서 Array 변수를 받은 iterater에 변화를 주면 Array에 있는 실제 변수에 permanent한 변화가 가해진다.

Exam)

@data=('Good_haha','Bad_haha');

for $i(@data)
{
$i=~s/\_haha//g;
}

에서 data array의 변수를 받은 iterater $i에 가해진 정규식 substitution ( _haha 를 잘라낸다)
은 @data의 실제 변수들에 변화를 가한다.

$i는 @data의 변수 그 자체이지, 이를 call by value로 받은 지역 변수가 아니다.