次のことを実行できる何かがあるかどうか知りたいです。
folder1 has files "readfile1" "f2" "fi5"
私が知っている唯一のことは、 で始まるファイルを読み取る必要があるということです。readfile
文字列 の後の名前に何があるかわかりませんreadfile
。また、ディレクトリ内の他のファイルが . で始まることはありませんreadfile
。
open
コマンドでこのファイルを開くにはどうすればよいですか?
ありがとうございました。
次のことを実行できる何かがあるかどうか知りたいです。
folder1 has files "readfile1" "f2" "fi5"
私が知っている唯一のことは、 で始まるファイルを読み取る必要があるということです。readfile
文字列 の後の名前に何があるかわかりませんreadfile
。また、ディレクトリ内の他のファイルが . で始まることはありませんreadfile
。
open
コマンドでこのファイルを開くにはどうすればよいですか?
ありがとうございました。
globを使用して、特定の文字列に一致するファイルを見つけることができます。
my ($file) = glob 'readfile*';
open my $fh, '<', $file or die "can not open $file: $!";
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;
ディレクトリの内容を読むのにインポートは必ずしも必要ではありません - perl にはそれができる組み込み関数がいくつかあります:
opendir DIR, ".";
my ($file) = grep /readfile.*/, readdir(DIR);
open FILE, $file or die $!;