[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: suche regexp



Roland M. Kruggel wrote:

Perl hört sich gut an.
Wäre es unverschämt von mir, wenn ich um einen perlaufruf bitten würde. Dann könnte ich mir ein bash-script bauen das die ganzen 58 File nacheinander abklappert.

In Perl kannst auch Files mit einer Schleife durchlaufen, bzw. ganze sogar ganze Hierarchien von Verzeichnissen.

Eine entsprechende Subroutine in Perl sieht etwa so aus:

sub read_files {
    my (
        $dir,
        $sub_dir,
        $file_extension,
        $hash_ref
        ) = @_;

    my $current_dir = check_dir ($dir);
    local(*CURDIR);

print STDERR "opening dir \"$current_dir\" for read\n" if $VERBOSE >= 2; opendir(CURDIR,"$current_dir") or die "Can't open directory \"$current_dir\"\n";
    #rewinddir(DIR);
    print STDERR "selecting files\n"  if $VERBOSE >= 3;
    my @entries = readdir CURDIR ;
    #my @files = grep {/^.+\.$file_extension$/} readdir CURDIR ;
    closedir (CURDIR);

    #print "dir entries \t [ @files ] \n"  if $VERBOSE >= 3;

    for my $dir_entry ( sort @entries ) {
        my $target = $current_dir . $dir_entry;

        if ( $dir_entry =~ m/^$file_extension$/ ) {
            read_file ($current_dir, $dir_entry, $hash_ref) if -f $target;
        }
        else {
            if ( $dir_entry =~ m/^(\.\w|\w).*$/ ) {
read_files ($target, $sub_dir, $file_extension,$hash_ref ) if -d $target;
            }
        }
    }
}

Bei komplexeren Sachen ist Perl halt flexibler, aber das Erlernen zahlt sich aus.

In Deinem Fall würde ein Shell-Script mit den üblichen Utilities auch reichen. Ist halt eine Geschmacksfrage, ob man sich tiefer in bash & co oder lieber gleich in Perl einarbeitet.

Mir war für das Umformatieren sed, awk, find, sort, tr, uniq etc. auf die Dauer zu mühsam, weshalb ich Perl bevorzuge.

Helmut Wollmersdorfer



Reply to: