使用perl中的wild字符从多个文件中读取

时间:2013-06-26 10:46:12

标签: perl

假设我有5个文件:tmp1.txttmp2.txttmp3.txttemp1.txttemp2.txt

现在有办法打开多个文件并使用wilcards从中读取。

实施例,

  1. 如果我写"t*.txt",那么应该读取每个文件中的数据。
  2. 如果我写"tm*.txt",则只能读取3个文件中的数据。

2 个答案:

答案 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}}