Tips in Action‎ > ‎배열과 Hash‎ > ‎

배열의 일부를 없애거나 대체하기

전종필

많은 경우는 아니지만, 배열의 일부를 지워야 할 때가 있습니다. delete 함수는 해쉬의 일부를 완전히 없앨 때 사용할 수 있고, 배열의 일부를 지울 수도 있지만, 배열의 경우에는 요소가 없어진다기 보다는 장소는 그대로 남고 값만 undef 값이 될 뿐이어서 배열의 요소를 없애기에는 적합하지 않을 수 있습니다.
그래서, 배열의 경우에는 splice를 사용합니다. 이 함수는 배열의 일부를 지우고, 선택적으로 그 대신에 다른 목록을 집어넣을 수 있습니다.

@array = qw( 1 2 3 4 10 11 12 13 5 6 7 8 );
splice( @array, 4, 4 );
print "@array\n"; # 1 2 3 4 5 6 7 8 출력
일부를 대체할 경우는

@array = qw( 1 2 3 4 11 12 13 14 9 10 );
splice( @array, 4, 4, 5, 6, 7, 8 );
print "@array\n"; # 1 2 3 4 5 6 7 8 9 10 출력
과 같이 합니다. 물론,

@array = qw( 1 2 3 4 11 12 13 14 9 10 );
@newarray = qw( 5 6 7 8 );
splice( @array, 4, 4, @newarray );
print "@array\n"; # 1 2 3 4 5 6 7 8 9 10 출력
라고 해도 됩니다.
없애거나 대체할 부분의 인덱스를 미리 알아야만 한다는 점이 단점이 될 수도 있습니다. 
Comments