2016-06-23 82 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

相關問題