1. 연속된 정수들에 어떤 연산을 수행하려면 (How do I perform an operation on a series of integers?)
배열의 각 원소에 대하여 함수를 호출하고 결과를 모으는 경우 다음처럼 사용하라:
@results = map { my_func($_) } @array;
@triple = map { 3 * $_ } @single;
각 원소에 대하여 함수를 호출하되 결과는 무시하는 경우:
foreach $iterator (@array) {
some_func($iterator);
}
어떤 (작은) 범위의 정수들 각각에 대하여 함수를 호출하는 경우 다음과 같이 할 수 있다:
@results = map { some_func($_) } (5 .. 25);
그러나 ".." 연산자는 그 범위에 해당하는 모든 정수를 원소로 하는 배열을 생성한다는 것에 유의하라. 범위가 클 경우 메모리를 많이 차지하게 된다. 대신에 다음과 같이 하라:
@results = ();
for ( $i = 5; $i < 500_005; $i++ ) {
push(@results, some_func($i));
}
이런 상황은 Perl 5.005에서 수정되었다. "for" 루프 안에서 ".." 연산자를 사용할 경우는 전체 범위의 배열을 생성하지 않고 반복하게 된다.
for my $i (5 .. 500_005) {
push(@results, some_func($i));
}
위 코드는 500,000개의 정수의 리스트를 만들지 않는다.
컴퓨터분류 Perl /Perlfaq