User Tools

Site Tools


kurs:strassen.pl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

kurs:strassen.pl [2014/09/10 21:22]
kurs:strassen.pl [2014/09/10 21:22] (current)
Line 1: Line 1:
 +<​code>​
 +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;​
 +}
 +
 +</​code>​
kurs/strassen.pl.txt ยท Last modified: 2014/09/10 21:22 (external edit)