#!/usr/bin/perl use strict; use warnings; use File::Basename qw/basename/; my @files = @ARGV; die "Syntax: " . basename($0) . " Datei1 [Datei2] [Datei3] ...\n" unless @files; my @labels; for my $file (@files) { my ($label = basename($file)) =~ s~^kw(.+)\.txt$~$1~; die "kann keinen Label zur Datei '$file' finden\n" unless defined $label and length $label; push @labels, $label; } die "Anzahl Dateien und Anzahl Label sind unterschiedlich\n" unless @label == @files; my %db; for my $i (0 .. $#files) { my $file = $files[$i]; my $label = $labels[$i]; open(F, $file) or die "Kann '$file' nicht oeffnen: $!\n"; while () { chomp; next if m/^\s*$/; my ($suchbegriff, $anzahl) = split("\t",$zeile); $db{$suchbegriff}->{$label} = $anzahl; # oder: push @{ $db{$suchbegriff}->{$label} }, $anzahl; } close F or warn $!; } use Data::Dumper; $Data::Dumper::Sortkeys = 1; print Dumper \%db;