2010-01-10 10 views
3

Perl에서 파일 핸들을 프로그래밍 방식으로 생성하는 방법이 있습니까?프로그래밍 방식으로 여러 Perl 파일 핸들을 생성하려면 어떻게해야합니까?

10 개의 파일을 동시에 열고 (CONST NAME + NUMBER) 구성된 파일 핸들을 사용하여 파일에 쓰기를 원합니다. 예를 들어 당신이 파일을 지정할 수 있습니다

print const_name4 "data.."; #Then print the datat to file #4 
+2

배열에 파일 핸들을 저장할 수 없습니다? – adamse

+1

_Intermediate Perl_에는 전체 장이 나와 있습니다. :) –

답변

9

파일 핸들을 초기화되지 않은 배열 슬롯에 직접 붙일 수 있습니다. 당신은이 작업을 수행 할 수 있습니다 map

print $handles[3] $data; # syntax error 
print {$handles[3]} $data; # you need braces like this 
3

요즘은 그냥 배열을 생성하고 그와 함께 그것을 채울 수 있도록, (오히려 (귀하의 예처럼) 표현을 사용하는 것보다) 스칼라로 처리합니다.

my @list_of_file_handles; 
foreach my $filename (1..10) { 
    open my $fh, '>', '/path/to/' . $filename; 
    push $list_of_file_handles, $fh; 
} 

당신은, 물론, 대신 variable variables을 사용할 수 있지만, 그들은 불쾌한 접근하고 배열을 사용하거나 해시가 더 나은 내기 아니 었 때 한 번 본 적이 없어.

+0

하지만 만약 내가 어떻게 그것을 할 당신은 또한 @ list_of_file_handles, $ fh를 밀어 의미 다섯 번째 파일을 작성하고 싶습니다; ? 감사합니다. – dan

+0

print {$ list_of_file_handles [4]} $ data; – Quentin

5

IO::File의 비트와 :

my @handles; 
for my $number (0 .. 9) { 
    open $handles[$number], '>', "data$number"; 
} 

배열의 핸들로 인쇄의 구문이 약간 다르다는 것을 잊지 마십시오

use IO::File; 

my @files = map { IO::File->new("file$_", 'w') } 0..9; 

$files[2]->print("writing to third file (file2)\n"); 
관련 문제