如何打开Perl未知全名的文件?

时间:2010-07-15 21:10:45

标签: perl file file-handling

我想知道是否有任何东西可以让我做以下事情:

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

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

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

谢谢。

3 个答案:

答案 0 :(得分:10)

glob可用于查找与特定字符串匹配的文件:

my ($file) = glob 'readfile*';
open my $fh, '<', $file or die "can not open $file: $!";

答案 1 :(得分: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;

答案 2 :(得分:1)

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

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

open FILE, $file or die $!;