2011-05-08 2 views
2

내가하려고하는 것은 이름의 배열을 사용하여 여러 개의 다른 배열을 반복하는 것입니다. 여기에 내가이 그것을 센서 2 "& @"라는 이름의 "센서 1 @"내가 그것을 찾기 위해 원하는 것은 때 "$ 이름 @"배열을 찾기 위해 시도 때문에 밖으로 에러가 발생합류하지 않고 다른 배열을 사용하여 배열을 반복하다

my @Sensor1 = ("1.2.3.4","1.2.3.5","1.2.3.6"); 
my @Sensor2 = ("2.2.2.1","2.2.2.2","2.2.2.3"); 
my @Sensor3 = ("128.0.0.1","128.0.0.2","128.0.0.3"); 
my @Names = ("Sensor1","Sensor2","Sensor3"); 
my ($Name, $IP); 

foreach $Name (@Names){ 
    foreach $IP (@$Name){ 
    print "$Name"," $IP","\n"; 
    } 
} 

이 무엇 "@ Sensor3".

답변

12

제게는 더 나은 데이터 구조를 사용하는 것이 좋습니다. 예를 들어 : Why it's stupid to `use a variable as a variable name' :

use strict; 
use warnings; 

my %sensors = (
    Sensor1 => ['1.2.3.4', '1.2.3.5', '1.2.3.6'], 
    Sensor2 => ['2.2.2.1', '2.2.2.2', '2.2.2.3'], 
    Sensor3 => ['128.0.0.1','128.0.0.2','128.0.0.3'], 
); 

for my $sensor_name (sort keys %sensors){ 
    my $ips = $sensors{$sensor_name}; 
    print "$sensor_name: $_\n" for @$ips; 
} 

또한 마크 제이슨 도미 누스에서 고전을 참조하십시오. 다음과 같이 중요한 점은 제 3의 마지막에 요약되어 있습니다 : 한 compter 프로그램의 모든의 가장 큰 문제 중

하나는 네임 스페이스 관리 및 데이터 숨어있다. 당신이 상징적 인 참조를 사용하면 고등 학교의 수업에서 고비용의 40 년을 던지고 노크.

+0

감사합니다. 해시로 작업하는 데 더 많은 시간을 할애해야 할 필요가 있습니다. – stupidking

관련 문제