假设我有5个文件:tmp1.txt
,tmp2.txt
,tmp3.txt
,temp1.txt
,temp2.txt
。
现在有办法打开多个文件并使用wilcards从中读取。
实施例,
"t*.txt"
,那么应该读取每个文件中的数据。"tm*.txt"
,则只能读取3个文件中的数据。答案 0 :(得分:0)
是的,您可以使用glob
,假设这些文件存在于本地目录中,并且该目录中没有其他具有相似名称的文件。
print "Read which files? ";
chomp(my $glob = <STDIN>);
my @files_to_read = glob $glob;
当然,您可以通过过滤来确保没有其他文件
my %valid = map { $_ => 1 } qw(tmp1 tmp2 tmp3 temp1 temp2);
@files = grep $valid{$_}, glob $glob;
第一个语句创建一个散列,其中有效文件名键具有true值,另一个语句对glob列表的元素运行此检查。
答案 1 :(得分:0)
您可以使用glob
查找文件列表,并通过将列表分配给@ARGV
来顺序读取它们,our @ARGV = glob '/path/to/tm*.txt';
while (<ARGV>) {
print;
}
模拟它们在命令行上传递。
{{1}}