2009-07-01 3 views
0

ID가 많아서 임시 목적으로 저장하고 일부 레코드를 검색해야합니다. Perl에서이 작업에 적합한 데이터 구조는 무엇입니까? 해시 나 배열을 사용해야합니까, 아니면 효율적으로이 모듈을 사용할 수 있습니까?레코드 검색을위한 최상의 데이터 구조

기록은 4343, 34343, 34343, 2323, 232, ...입니다.

+0

원하는 작업이 명확하지 않습니다. 어떤 유형의 데이터를 저장하고 어떻게 액세스 할 것인지 설명 할 수 있습니다. – hillu

+0

나는 10000 개의 레코드와 하나의 데이터 strcuture에 저장하고 그 레코드를 검색하고 싶습니다 – joe

+0

ID를 가지고 있고 d 개의 데이터베이스에서 반복하고 하나의 데이터 strtucure에 저장하고 레코드 일부를 검색합니다 – joe

답변

3

레코드 레이아웃에 관한 정보는 사람들을 돕는 데 많은 도움이 될 것입니다. 당신의 기록이 ID 번호에 연결되어있는 경우에 당신은

my %records; 
$records{ $id_number } = "Record for $id_number"; 
## OR 
$records{ $id_number } = ['Record', 'for', $id_number]; 

이것은 당신이 조회 할 수 있도록 키와 'ID'로 해시를 사용하고 문자열로 기록 또는 해시 값으로 배열 참조를 저장할 수 있습니다 id는 복잡성 O (1)이고 해당 레코드를 쉽게 조작 할 수 있습니다. 해시의

# Assuming the records are stored in @records 
for my $record (@records) { 
    $recStore{$record}++; 
} 

# To search for a record 
my $recToFind = 4343; 
my $recExists = $recStore{$recToFind} || 0; 

키는 아이디의 데이터베이스에서 검색하고 해당 값은 존재에 대한 기록을 반복하기위한 $ recExists가 1보다 클 수 있도록, ID가 발견 된 횟수이며, 0과 같을 것입니다. 숫자로 정렬 된 모든 ID의 목록을 얻으려면 숫자로 쓸 수 있습니다.

my @sortedID = sort {$a <=> $b} keys %records; 
+0

ID 저장 및 ID 검색 방법 .. 예를 들어. 4343에 저장된 것을 검색하고 싶습니다. 설명해주세요. – joe

+0

하나의 레코드에 대한 세부 정보를 포함 할 수 있습니까? 이렇게하면 작업에 적합한 저장소 메커니즘을 공식화 할 수 있습니다. – aks

+0

$ Reocrd = 10의 값을 얻고 있습니다. – joe

관련 문제