Thread txt-datei filtern (17 answers)
Opened by Xylol at 2009-12-03 10:59

sid burn
 2009-12-03 11:41
#128881 #128881
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Als vollständiges Programm:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env perl
# Core Modules
use strict;
use warnings;
use utf8;
use open ':encoding(UTF-8)';
use open ':std';
use Getopt::Long;

my $input;
my $output = \*STDOUT;

# Accepts -i and -o
GetOptions(
    'input=s'  => \$input,
    'output=s' => \$output,
) or die "Argument Parsing Error\n";

# Open input file
open my $fh_in, '<', $input or die "Cannot open input file: $!\n";

# $fh is file or STDOUT
my $fh_out;
if ( ref($output) eq 'GLOB' ) {
    $fh_out = $output;
}
else {
    open $fh_out, '>', $output or die "Cannot open output file: $!\n";
}

# read file
while ( my $line = <$fh_in> ) {
    chomp($line);
    if ( length($line) > 10 && length($line) < 15 ) {
        print {$fh_out} $line, "\n"
            or die "Cannot write to output: $!\n";
    }
}

close $fh_in  or die "Cannot close input file: $!\n";
close $fh_out or die "Cannot close output file: $!\n";


Programm akzeptiert "-i" und "-o" als Kommandoswitch. Mit "-i" gibst du den Dateinamen an. Mit "-o" die Ausgabedatei. Lässt du "-o" weg landet die ausgabe standardmäßig auf STDOUT.

Alle Dateien werden UTF-8 encodiert eingelesen. Und es wird geprüft ob es auch zwischen 10 oder 15 "Zeichen" sind, nicht Bytes.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread txt-datei filtern