Thread Alle *.txt Dateien in eine packen: zusammenführen der Daten (7 answers)
Opened by ahnungsloser at 2005-08-19 13:53

Strat
 2005-08-19 14:45
#57306 #57306
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn du @alles = <IN> schreibst, wird @alles geleert und der inhalt der aktuellen datei hinzugefuegt. entweder schreibst du es gleich in der foreach $data-Schleife nach OUT, oder du verwendest anstelle von @alles = <IN> das konstrukt push(@alles, <IN>); aber das kostet bei groesseren dateien unnoetig RAM.

teste mal:
Code: (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
#! /usr/bin/perl
use warnings;
use strict;

my $aktVerz = $ARGV[0] or &PrintUsage();
my $ausgabedat = $ARGV[1] or &PrintUsage();

unless (opendir(DIR, $aktVerz)) {
die "Error: couldn't open dir '$aktVerz': $!\n";
} # unless

unless (open (OUT, ">", $ausgabedat)) {
die "Error: couldn't write to '$ausgabedat': $!\n";
} # unless

while (my $file = readdir(DIR)) {
my $fileName = "$aktVerz/$file";
next if -d $filename; # ueberspringe verzeichnisse
next unless $file =~ /\.txt$/; # ueberspringe nicht-txt

unless (open(FILE, "<", $filename)) {
warn "Error: couldn't open file '$filename': $!\n"; # oder die ...
} # unless
else {
print OUT $_ while <FILE>;
close (FILE);
} # else
} # while

closedir(DIR);
close(OUT);
# --------------------------------------------
sub PrintUsage {
require File::Basename;
my $bin = File::Basename::basename($0);
die "Usage: $bin verzeichnis ausgabedatei\n";
} # PrintUsage
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Alle *.txt Dateien in eine packen: zusammenführen der Daten