Ich nehme mal an, Deine Textdateienamenn haben immer das Format "kwYYYY-MM.txt" (wobei YYYY für eine Jahreszahl und MM für eine zweistellige Monatszahl steht). Folgender Ansatz:
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
#!/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 (<F>) {
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;
ungetestet und direkt ins Forenfenster getippt, könnte aber zumindestens als Ansatz passen.\n\n
<!--EDIT|Crian|1116859436-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite