[英]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.