2012-06-03 17 views
5

Dizine bağlı olarak hangi verilere hangi verilerin girileceğini seçmek istedim. Ancak, aşağıdakilerle sıkışmış gibi görünüyorum.Dosya tanıtıcısı dizisi

ben dosyanın dizisi kolları kullanarak dosyaları oluşturduk:

my @file_h; 
my $file; 
foreach $file (0..11) 
{ 
    $file_h[$file]= new IT::File ">seq.$file.fastq"; 
} 

$file= index; 
print $file_h[$file] "$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n"; 

Ancak, son satırdaki nedense bir hata alıyorum. Kimseye yardım et .... İlk geçici bir değişkene $file_h[$file] atama

+0

Bu, Perl'in sözdiziminin bir tuhaflığıdır, çünkü dosya elmaları orijinal değişkenler bile değildir, çok daha az karmaşık lvalues. –

+0

Hata nedir? Ayrıca, eksiksiz, kendi kendine yeten bir örnek olabilir misiniz? (Bu gerçekten bazı sorulara cevap verebilir, gerçekten IT demek misiniz?) [File [sic]? İndeks() 'veya' $ index' anlamına mı geliyor?) – pilcrow

cevap

1

Dene: bir çıkış başka türlü üstesinden olarak

my @file_h; 
my $file; 
my $current_file; 

foreach $file (0..11) 
{ 
    $file_h[$file]= new IT::File ">seq.$file.fastq"; 
} 

$file= index; 
$current_file = $file_h[$file]; 

print $current_file "$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n"; 

gibi Hatırladığım kadarıyla, Perl geçersiz sözdizimi hakkında şikayetçi, bunu tanımıyor.

4

Hep nesne yönelimli sözdizimi kullanabilirsiniz: Ayrıca

$file_h[$file]->print("$record_r1[0]$record_r1[1]$record_r1[2]$record_r1[3]\n"); 

, bunları daha basit dizinin yazdırabilirsiniz:

$file_h[$file]->print(@record_r1[0..3],"\n"); 

Ya da böyle

, bu dört unsur aslında eğer Her şey:

$file_h[$file]->print("@record_r1\n"); 
17

basitçe olmalıdır:

my @file_h; 
for my $file (0..11) { 
    open($file_h[$file], ">", "seq.$file.fastq") 
     || die "cannot open seq.$file.fastq: $!"; 
} 

# then later load up $some_index and then print 
print { $file_h[$some_index] } @record_r1[0..3], "\n"; 
+0

ah ... köşebent şey, teşekkürler –

+0

İlginçtir $ file_h [$ some_index], LOCK_EX 'parantez olmadan çalışır. Nedenini bilen var mı? Tam olarak perl'de bir dosya takımı nedir? – soger

İlgili konular