2015-02-10 84 views
0

我是Perl的新手。我必須完成一項任務。我有一個目錄,並在該目錄中有130個子目錄。從這些目錄有報告子目錄和報告,有一個.txt文件,我想從該文件中獲取模式。Perl:遍歷目錄並從文件中獲取模式

同樣,我必須做所有的事情,並得到模式。

任何人都可以請示例代碼幫助或如何做到這一點?

任何幫助將不勝感激。

+7

歡迎來到Stack Overflow!你能告訴我們你到目前爲止所嘗試過的嗎? – 2015-02-10 02:36:18

+3

你不能只問別人爲你做你的全部工作。試試自己的東西,告訴我們你做了什麼。現在,您可以向我們詢問您遇到麻煩的某個地區。 – 2015-02-10 05:04:49

+4

查看[File :: Find](http://perldoc.perl.org/File/Find.html)模塊。它涵蓋了你想要完成的一大部分。 – 2015-02-10 05:12:42

回答

2

開始與此:

#!/bin/env perl 
use strict; use warnings; 

my ($dir) = @ARGV; 
$dir // die "No dir supplied"; 

die "Dir not found: $dir" unless (-e $dir); 
die "Not a dir: $dir" unless (-d $dir); 

my @files = <$dir/*/txtfile.txt>; 

foreach my $file (@$files) { 
    my $file_contents = undef; 

    # read the patten from file.. 
    open (my $fh, '<', $file) or die "Can't open $file. $!"; 
    # Read the file contents here.. 
    { 
     local $/ = undef; 
     $file_contents = <$fh>; 
    } 
    close $fh; 

    # Do something more 
} 

這種方法被稱爲文件通配符。使用專門編寫的模塊有更好的方法,但這種方法很有效。這與在終端窗口輸入ls -l mydir/*/txtfile.txt是一樣的。