Perl:在不知道前缀的情况下复制文件

时间:2013-08-11 09:45:52

标签: perl file

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

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目录中文件的名称,但我希望能够在路径中指明它,而不管前缀如何。你能救我吗?

2 个答案:

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

这假设$name$interhelical等包含字符串nameinterhelical的方式与$best包含best的方式相同

答案 1 :(得分:0)

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