我有多个World!
,并且在每个subdirectories
内我都有不同数量的txt
个文件。我正尝试将每个txt
文件从每个array
读入subdirectory
。请注意,每个subdirectory
都有不同数量的txt
个文件。我努力发现有人做了类似的事情。有没有人建议在哪里看,怎么做或类似的东西?
我已经找到了一些使用server command
如何完成的示例,但我没有按照自己的意愿行事。我也有点困惑如何为每个array
命名,尽管在不同的subdirectory
数组中可以使用相同的名称,例如array1, array2, array3..
#!/usr/local/bin/perl
use strict;
use warnings;
use File::Glob;
my $txt;
my @fh;
my @table;
my $table;
for my $txt(glob'*.txt')
{
open my $fh,'<',$txt;
print "$txt\n";
for (my $txt =1 ;$txt <=8; $txt++)
{
open ($fh,"server$txt");
while (<$fh>)
{
chomp;
my @values = split " ",$_;
push @{ "table$txt"},\@values;
print "$table$txt\n";
}
}
}
我可以使用此bash script
在所有perl script
上运行subdirectories
:
for i in `ls -d */`;do cd $i; pwd; for j in *txt; do perl ../foo.pl $j; done; cd ../ ; done
答案 0 :(得分:0)
我没有测试过这个,我只在窗口中输入了代码。我的perl也生气了,并且直截了当地做事。
假设所有文本目录都在一个主目录下。使用opendir打开主目录。然后,您可以读取主目录中的所有条目并进行测试,以查看该条目是否是子目录(.txt文件所在的子目录)。
访问子目录,然后使用glob和regex测试.txt扩展名,它将返回一个数组,将数组推入主数组,创建一个数组数组。您可以查找如何迭代此结构以获取您的信息。
@all_subdirs;
$main_dir = "C:\main_dir";
my @files;
opendir (DIR,$main_dir) || die $!;
@files = readdir (DIR);
closedir (DIR) || die $!;
$i = 0;
foreach $subdir(@files){
if(-d $sub_dir){ #-d tests for directory
@tmp = glob "$main_dir\$subdir\*.txt";
$all_dirs[$i] = [ @tmp ];
$i++;
}
}
这将subdir数组存储为数组引用。要获取数组,您需要取消引用它,如下所示:
$arrayref = $all_subdirs[0];
@an_array = @$array_ref;
答案 1 :(得分:0)
您不清楚是否希望将文件的名称读入数组,或者文件的内容。
在前一种情况下,您可以从File::Find
模块中受益,以收集特定目录及其子目录中的所有文件名;在后一种情况下,您应该使用File::Find
和File::Slurp
来阅读内容。