2016-06-23 51 views
0

问题:我有一个特定的文件夹,其中只有一个文件具有特定的扩展名。该文件生成一个名字总是变化......Perl:从特定文件夹中选择具有特定扩展名的不同文件名

我想它分配给一个变量,然后通过在Perl 我试图子程序如下

我的$文件=” ./abc/ 。DEF/* XML“;使用上,我必须控制

我的$文件中的一个字段= 也试过 “./abc/def/ ._ $ {用户名} _ .XML。”

但我打印的文件名称....它说* .xml或._name_。 .xml而不是实际的文件名...

有人能告诉我如何解决我的问题。 我是perl的新手......所以这里的任何帮助都会很棒。 我已经搜索了其他几个地方,但没有找到这个特定点的任何东西。

+0

my $ file =“./abc/def/*._${username}_.*.xml”;例如...文件名是类似temp_username_date timestamp.xml –

回答

3

你想glob

my $file = glob './abc/def/*.xml'; 

或许:

my @files = glob './abc/def/*.xml'; 

不知道为什么你遇到与$username一部分,尽管问题。它应该展开该变种。 (虽然,我不知道你为什么有_任何一方)。

+0

谢谢Sobrique。 glob是我一直在寻找的。这完美地解决了我的问题。我使用$文件,因为我总是只有一个文件在这个文件夹中。 –

0

您可以使用下面的方式打印文件,然后您可以使用它们。

代码:

my @dir = `ls ./abc/def/`; 
    foreach my $id (@dir) 
    { 
      chomp($id); 
      print "$id\n"; 
    } 

希望这会帮助你。

+2

从'perl'内调用'ls'是一个可怕的想法。 – Sobrique

+0

感谢Arjit的回应 –

+0

感谢您的代码和建议。我不知道** glob **功能。所以我找到了解决这个问题的方法。@ Sobrique – Arijit

相关问题