-2

1 つのファイルを含むディレクトリへのパスがあります。ただし、ファイルのプレフィックスはわかりません。つまり、拡張子しかわかりません。次のコードのパスでこのファイルを指定するにはどうすればよいですか。

for (my $k = 1; $k < 21; $k++)
{
    my $best = "best";
    my $underscore = "_";
    my $best = "$best$underscore$k.bgf";
    my $alabest = "$best$underscore$k.ala.bgf";
    my $source1 = "$name/$interhelical/$cnti/$multidock/$best";
    my $source2 = "$name/$interhelical/$cnti/$multidock/$alabest";
    my $source3 = "$name/$interhelical/$cnti/$multidock/$spheres/$sph1/$sph2/*.sph";
    my $target = "some path";
    copy $source1 => $target;
}

sph2 ディレクトリ内のファイルの名前はわかりませんが、プレフィックスに関係なくパスで指定できるようにしたいと考えています。手伝ってくれませんか?

4

2 に答える 2

1

次のようなものを書く必要があります

my @bgf = glob "$name/$interhelical/$cnti/$multidock/*.bgf"

配列には、そのディレクトリ内の で終わるすべての@bgfファイルが含まれます。.bgf

「1 つのファイルを含むディレクトリへのパスを持っている」という点が正しければ、配列には 1 つの要素しかありません。

しかし、あなたの質問は非常に不明確です。とは$source3? ディレクトリ.bgf内のファイルも検索する必要がありますか? spheresまた、パスの個別のセグメントごとに変数があるのはなぜですか? あなたが言うように単純なパスが与えられている場合は、次のように書く方がはるかに良いでしょう

my $bgf_path = 'name/interhelical/cnti/multidock';
my @bgf = glob "$bgf_path/*.bgf";

そして、これは、 holdと同じ方法で、$nameetc$interhelicalに文字列が含まれていることを前提としています。nameinterhelical$bestbest

于 2013-08-11T13:02:41.973 に答える
0

このような状況では、 Perls globがあなたの味方です。

于 2013-08-11T09:50:04.477 に答える