簡體   English   中英

如何使用動態文件句柄動態打開多個文件

[英]How to open the multiple files dynamically using a dynamic file handle

我正在嘗試使用動態文件句柄打開多個文件,但是它不起作用。

for my $i ( 1 .. $#genome_list ) {
    my $fh = "RESULT$i";
    open my $fh, "<", "filename$i"; # here is the problem
}

然后如何訪問給定處理程序的數據。

當我運行程序時,它顯示此錯誤

Can't use string ("RESULT1") as a symbol ref while "strict refs" 

我該如何解決?

您正在嘗試做一些令人討厭的事情 ,而不是告訴您如何做,我將建議一種替代方法。

如果需要一次打開多個文件句柄,則需要一個哈希值

my %file_handle_for;
for my $i ( 1..$#genome_list ) { 
    open ( $file_handle_for{$i}, '<', "filename$i" ) or die $!;
}

然后,您可以按以下方式訪問文件:

print {$file_handle_for{$i}} "Some text\n"; 

要么:

while ( <{$file_handle_for{$i}}> ) {
    print;
 }

等等

當然,這是假設,您需要同時打開所有文件,而您可能並不需要打開這些文件。

上面是要使用變量作為變量名稱的一般解決方案。

不過,以您的情況來看-您將以數字順序打開文件而沒有任何間隙,這意味着數組更適合。

my @filehandle_for; 
#note though - arrays start at zero normally, so you might be missing one here!
foreach my $number ( 1..$#genome_list ) { 
  open ( $filehandle_for[$number], '<', "filename$number" ) or die $!;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM