4

我想知道是否有什么可以让我执行以下操作:

folder1 has files "readfile1" "f2" "fi5"

我唯一知道的是我需要读取以 开头的文件readfile,并且我不知道字符串后面的名称中有什么readfile。另外,我知道目录中没有其他文件以readfile.

如何使用open命令打开此文件?

谢谢你。

4

3 回答 3

10

glob可用于查找匹配某个字符串的文件:

my ($file) = glob 'readfile*';
open my $fh, '<', $file or die "can not open $file: $!";
于 2010-07-15T21:22:01.993 回答
2

正如工具所建议的那样,您可以将glob其用于简单的情况。

my ($file) = glob 'readfile*';

如果查找正确文件的标准更复杂,只需阅读整个目录并使用Perl 的全部功能将列表筛选为您需要的内容:

use strict;
use warnings;
use File::Slurp qw(read_dir);

my $dir   = shift @ARGV;
my @files = read_dir($dir);

# Filter the list as needed.
@files = map { ... } @files;
于 2010-07-15T21:44:06.090 回答
1

您不一定需要导入来读取目录的内容 - perl 有一些内置函数可以做到这一点:

opendir DIR, ".";
my ($file) = grep /readfile.*/, readdir(DIR);

open FILE, $file or die $!;
于 2010-07-15T22:33:59.167 回答