Как открыть файл, полное имя которого неизвестно в Perl? - PullRequest
3 голосов
/ 16 июля 2010

Я хочу знать, есть ли что-нибудь, что позволяет мне делать следующее:

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

Единственное, что я знаю, это то, что мне нужно прочитать файл, который начинается с readfile, и я не знаю, что там в имени после строки readfile. Также я знаю, что никакой другой файл в каталоге не начинается с readfile.

Как открыть этот файл с помощью команды open?

Спасибо.

Ответы [ 3 ]

10 голосов
/ 16 июля 2010

glob может использоваться для поиска файла, соответствующего определенной строке:

my ($file) = glob 'readfile*';
open my $fh, '<', $file or die "can not open $file: $!";
2 голосов
/ 16 июля 2010

Вы можете использовать glob для простых случаев, как подсказывает инструмент.

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

Если критерии для поиска правильного файла более сложны, просто прочитайте весь каталог и используйте fullсила 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;
1 голос
/ 16 июля 2010

Вам не обязательно требовать импорта для чтения содержимого каталога - в perl есть несколько встроенных функций, которые могут это сделать:

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

open FILE, $file or die $!;
...