2011-11-16 4 views

답변

6

를 사용하여 배열에 대한

num2 =x; 

감사를 생성하고 다수의 각 반복을 추가 예를 의 첫 번째 루프는 생성됩니다. 당신이 정말로 이름 그들에게해야 할 경우

my @nums; 

for (1..10) { 
    push @nums, $_; # your `x' 
} 
+0

배열을 사용하지 않는 방법이 있습니까? – adir

+7

@adir - 그렇습니다.하지만 악의적이고 비논리적이며 어리 석고 천천히 악몽입니다. 이것은 정확히 배열이 설계된 것입니다. – Quentin

+0

@Quentin - Thanks – adir

6

, 다음 해시는 잘해야한다. I 은 권장하지 않지만 입니다. 단순히 일류 변수를 사용하는 것과 같은 방법으로 체계적인 방법으로 "이름 지정"하는 방법을 보여줄뿐입니다. 배열이 비슷한 무언가를, 플러스 당신이 방법으로 점점 사전 순 대해 걱정할 필요가 없습니다 때

my %hash; 
my $i = 0; 
for (@list) { 
    $hash{ 'num' . ++$i } = $_; 
} 

는 다시이 자신의 순서에 따라 번호를 이름이 아니라 무의미하다.

변수를 명명하여 문제를 해결하는 것이 가장 좋은 방법인지 결정해야합니다.


난 그냥 내가 가능한 스칼라 구문과 같은 조금 다른 입력 싶어 할 때 내가 한 일을 회상했다. *_은 glob이지만, GLOB에서는 사용되지 않는 특정 슬롯이 있습니다.

local %_을 사용할 수 있습니다.

는 따라서 사이비 변수의이 유형의와 함께 입력 할 경우에만 추가 문자가 : 물론

$_{num001} += 43; 

, 이것은 당신이

를 입력 할 필요가 추가 문자 같은 양이다
$v{num001} += 43; 

도 마찬가지입니다.

+0

sprintf가 약간 복잡해 보이지만, 원칙적으로 동의합니다. 나중에 사용할 풀의 이름이 지정된 데이터를 추가해야하는 경우 해시를 사용하십시오. 대신 주문한 데이터 집합이 필요한 경우 배열을 사용하십시오. –

+0

@JoelBerger, 렉스 순서 (보통 다른 사람들의 코드에서)를 가진 충분한 run-ins를 가졌다면, sprintf 형식 스펙으로 문자열과 숫자를 연결하는 것이 제 2의 본성입니다. – Axeman

관련 문제