我正在尝试提取我的文件名,但我一直在获取GLOB< 0x486a8>作为文件名?我已经查看了回答类似问题的问题的多个答案,但我似乎无法解决我的问题。我打开的文件是标准的fasta文件,格式如下,第一行包含序列信息,后面的行是序列。
这是我的代码
#!/usr/bin/perl
use strict;
use warnings;
#open files from data directory
opendir my $data_dir, "data" or die "Unable to open directory!";
my @files = readdir $data_dir; #reading files into array
#Taking only files with .fa extention
my @fa_files = grep /[\.][f][a]$/, @files;
my @sorted_fa_files = sort @fa_files;
#Taking each .fa and reading description line
foreach (@sorted_fa_files) {
open my $filehandle, "<", "data/$_" or die "Unable to open file!";
while (<$filehandle>) {
print "filename: $filehandle\n";
}
}
有人想到吗?
答案 0 :(得分:1)
文件名是"data/$_"
(至少在while循环之前;你在while中覆盖$_
)。 $filehandle
是一个文件句柄,而不是文件名。
你应该避免将$_
用于两个不同的目的;改为使用词汇变量:
foreach my $filename (@sorted_fa_files){
open my $filehandle,"<","data/$filename" or die "Unable to open file!";
while ( my $line = <$filehandle> ){
print "filename: data/$filename";