2013-06-28 12 views
2

해시에 배열을 복사하려고합니다. 배열의 각 요소가 키이고 그 뒤에 빈 값이옵니다.배열을 해시로 복사

 %hash = map { get_a_key_for($_) => $_ } @array; 

하지만 키를 설정하는 방법을 알아낼 수 없습니다 :

my %questions = map { @u_list => $_ } @u_list; 

이 유일한 지문이

=> 

에서 나는 perldoc을에이 관용구를 참조하십시오. 키가 배열의 각 요소가되기를 원합니다.

+1

'내 % 질문 =지도 {$ _ => 미확정} @u_list,'또는, 대신 미확정 ","또는 0 – kjprice

+0

내가 % 질문에 쓸 수 =지도 { "$ _ \ t"= > ''} @u_list; 키 뒤에 탭을 추가 하시겠습니까? –

+0

예, 작동합니다. – kjprice

답변

8
my %questions = map { $_ => undef } @u_list; 

, @u_list의 각 요소를 설정해 ~ $ _.

10

슈퍼 복잡하지만 기능적 않음 :

@questions{@u_list}=(); 

이는 해시 키 세트를 지정하는 해시 슬라이스 구문을 사용 .. 맵

+0

조각 구문, 어? 그것은 매우 조밀 해 보인다. 나는 그것을 조사해야 할 것이다. –

+0

또한 모든 요소를 ​​같은 값으로 설정하는 데 사용할 수 있습니다 :'@questions {@u_list} = ("unknown") x @ u_list' 모든 질문을 "unknown"문자열로 설정합니다. –

3
%hash = map { $_ => '' } @array; 

이것은

2

$_이 목록 @u_list의 현재 요소 인 빈 문자열로 값을 설정합니다.

그래서 당신은

my %questions = map { $_ => 1 } @u_list;

해시 키와 같은 목록 요소를 매핑 말해야한다.

1

참조 용으로 여기에 몇 가지 방법이 있습니다. hash slice를 사용하여 foreach

my %questions; 
$questions{$_} = undef foreach (@u_list); 

를 사용 map

my %questions = map { $_, undef } @u_list; 

를 사용

.

my %questions; 
@questions{@u_list} = (undef) x @u_list; 
관련 문제