use strict;
use Data::Dumper;
my $dir = 'c:/perl/beispiele/strassen';
use Storable;
my $store_file = 'plz_store';
my $plz = {};
if (-f $store_file) {
$plz = retrieve($store_file)
} else {
my $gkz_file = "$dir/gkz_plz.txt";
open (FH, "<$gkz_file");
my @gkz = <FH>;
close FH;
foreach my $line (@gkz) {
$line =~ /(\d{5}) (\d{4})/;
#print "$1 $2";
$plz->{$2} = get_strassen($dir, $1);
}
store $plz, $store_file;
}
my $postleitzahl;
my $strasse;
while ($postleitzahl ne 'end') {
print "PLZ : ";
$postleitzahl = <STDIN>;
print "Strasse : ";
$strasse = <STDIN>;
chomp($strasse);
chomp($postleitzahl);
print $plz->{$postleitzahl}->{$strasse} ."\n";
}
## print Dumper $plz;
sub get_strassen {
my ($dir, $gkz) = @_;
open (FH, "<$dir/$gkz.txt");
my @strassen = <FH>;
close FH;
my $strassennamen = {};
foreach my $strasse (@strassen) {
## print "$strasse \n";
### 10101Eisenstadt 096416Ahorngasse
$strasse =~ /^\d{5}.*?(\d{6})(.*?)\s{2,}/;
# print "$2\n";
$strassennamen->{$2} = $1;
}
return $strassennamen;
}