-2

我有一个包含一个文件的目录的路径。但是,我不知道文件的前缀,这意味着我只知道扩展名。如何在以下代码的路径中指示此文件。

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以该目录结尾的文件。

如果您对“我有一个包含一个文件的目录的路径”是正确的,那么该数组将只有一个元素。

但是你的问题很不清楚。是什么$source3?您是否还需要.bgf在目录中查找文件spheres?为什么路径的每个单独段都有变量?如果您已经按照您所说的那样获得了一条简单的路径,那么编写起来会更好

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

并且假设etc. 包含字符串$name,方式与hold相同。$interhelicalnameinterhelical$bestbest

于 2013-08-11T13:02:41.973 回答
0

在这些情况下, Perls glob是你的朋友。

于 2013-08-11T09:50:04.477 回答