Arrays 在perl中将多个文件添加到数组中
我有一些txt文件,其中包含大量行,如:Arrays 在perl中将多个文件添加到数组中,arrays,list,perl,Arrays,List,Perl,我有一些txt文件,其中包含大量行,如: file_1.txt file_2.txt file_3.txt XP_001703830.1 XP_001703820.1 XP_001703810.1 XP_001703836.1 XP_001703815.1 XP_001703805.1 XP_001703844.1 XP_001703834.1 XP_001703844.1 假设我在一个文件夹中有10个或更多文件,我想读取所有文件并将内容存储在一
file_1.txt file_2.txt file_3.txt
XP_001703830.1 XP_001703820.1 XP_001703810.1
XP_001703836.1 XP_001703815.1 XP_001703805.1
XP_001703844.1 XP_001703834.1 XP_001703844.1
假设我在一个文件夹中有10个或更多文件,我想读取所有文件并将内容存储在一个数组中,我使用了此代码,但它只存储文件的一行,而不是所有行
#!/usr/bin/perl -w
use strict;
my @files = glob("*.txt");
my @ID;
for my $file(@files) {
open IN, '<', $file or die "$!";
while (<IN>) {
my $fields = $_;
push @ID, $fields;
}
}
foreach (@ID){
print "$_\n";
}
close IN;
exit;
非常感谢 我猜您在线路终止符方面有问题。试一试
open IN, '<:crlf', $file
在中打开,”我想您的行终止符有问题。试一试
open IN, '<:crlf', $file
在“中打开,如果您正在将所有内容读入内存(通常不是RAM的最佳使用),那么您可以这样做。。。perl TIMTOWTDI
my @ID;
{
local(@ARGV) = glob("*.txt");
@ID=<>;
}
print "@ID\n";
my@ID;
{
本地(@ARGV)=全局(“*.txt”);
@ID=;
}
打印“@ID\n”;
如果您正在将所有内容读入内存(通常不是RAM的最佳使用),那么您可以这样做。。。perl TIMTOWTDI
my @ID;
{
local(@ARGV) = glob("*.txt");
@ID=<>;
}
print "@ID\n";
my@ID;
{
本地(@ARGV)=全局(“*.txt”);
@ID=;
}
打印“@ID\n”;
通过将默认输入分隔符初始化为未定义,可以解决此问题
use strict;
my @files = glob("*.txt");
my @ID;
for my $file(@files) {
open IN, '<', $file or die "$!";
while (<IN>) {
my $fields = do{local $/; <IN>};
push @ID, $fields;
}
}
foreach (@ID){
print "$_\n";
}
close IN;
exit;
使用严格;
my@files=glob(“*.txt”);
我的@ID;
对于我的$file(@files){
在“中打开,将默认输入分隔符初始化为未定义,可以解决此问题
use strict;
my @files = glob("*.txt");
my @ID;
for my $file(@files) {
open IN, '<', $file or die "$!";
while (<IN>) {
my $fields = do{local $/; <IN>};
push @ID, $fields;
}
}
foreach (@ID){
print "$_\n";
}
close IN;
exit;
使用严格;
my@files=glob(“*.txt”);
我的@ID;
对于我的$file(@files){
在打开txt文件的循环中,“第一个close-IN;
应该在下。我完全能够使用您的精确代码将所有行存储在一个数组中!!您在@ID
中得到了什么?您为什么要重新发明cat
?第一个close-IN;
应该在下,在循环中,您可以打开一个txt文件。我完全能够用你的精确代码将所有行存储在一个数组中!!你从@ID
中得到了什么?你为什么要重新发明cat
?