2014-02-20 2 views
1

map 함수가 perl에서 입력 배열의 값을 변경하는 이유는 무엇입니까? 을map 함수가 perl에서 입력 배열의 값을 변경하는 이유는 무엇입니까?

#!/usr/bin/env perl 


use strict; 
use warnings; 
use v5.10; 


my @words = <DATA>; 

# want to have another array that contains the each word in reverse order 
my @reverse_words = map { $_ = scalar reverse $_ } @words; 

say $words[0]; # want to check the content of first element of original array 
say $reverse_words[0]; # new 



__DATA__ 
aarhus 
aaron 
ababa 
aback 

을 설명하지만이

$perl findPalindrome.pl 

suhraa 

suhraa 

왜 원래의 배열이 변경되어 인쇄하려면?

답변

4

$_을 수정하여 요청했습니다.

당신은 그래서 당신이 배열의 요소의 복사 된 버전으로 취급하지 않는

my @reverse_words = map { scalar reverse $_ } @words; 
+0

줄까? 위험하지 않아? – Alby

+1

그게 무슨 뜻인지 모르겠다 – ikegami

+0

죄송합니다. 나는 이것을 의미했다. $ _는 복사 된 요소가 아닌 단어의 각 요소에 대한 포인터이다. 그래서 $ _ = 스칼라 역방향 $ _에 의해, 당신은 말로 요소를 효과적으로 바꾸고 있습니다, 맞습니까? – Alby

관련 문제