#!/usr/bin/perl
#fixed.plx

my %hash;

$_ = "";

until (/^q/i) {

print " Co chciaby zrobi? (nacinij 'o' aby wywietli opcje):";
chomp($_  =  <STDIN>);

if ($_ eq "o") { options() }
elsif($_ eq "r"){ readit() }
elsif($_ eq "l"){ listit() }
elsif($_ eq "w"){ writeit() }
elsif ($_ eq "d") { deleteit() }
elsif ($_  eq "x") { clearit() }
elsif ($_  eq "q") { print "egnaj!\n"; }
else { print "Przykro mi, lecz nie rozpoznaem opcji. \n";}
}

sub options {
  print<<EOF
    Dostpne opcje:
    o - wywietla opcje
    r - czytanie wpisu
    l - wywietlenie wszystkich wpisw
    w - zapisanie wpisu
    d - usunicie wpisu
    x - usunicie wszystkich wpisw
EOF
}

sub readit {
  my $keyname  =  getkey();

  if (exists $hash{"$keyname"}) {
    print "Element '$keyname' ma warto $hash{$keyname}";
  } else {
    print "Przykro mi, lecz ten element nie istnieje. \n"
  }
}

sub listit {
  foreach (sort keys(%hash))  {
    print  "$_  => $hash{$_ }\n";
  }
}

sub writeit {
  my $keyname  = getkey();
  my $keyval  = getval();
  if (exists $hash{$keyname}) { 
    print "Przykro mi, lecz ten element ju istnieje.\n"
  }else {
    $hash{$keyname}=$keyval;
  }
}

sub deleteit {
  my $keyname  =  getkey();
  if (exists $hash{$keyname})  {
   print "Usuwam wpis $klawisz. \n";
   delete $hash{$keyname} if besure();
  }
}

sub clearit {
  print "Usuwam ca zawarto biecej bazy danych.\n";
  undef %hash;
}

#*** Podprogramy wejciowe ***
sub getkey {
  print " Podaj nazw klucza dla elementu: ";
  chomp($_  =  <STDIN>);
  $_;
}

sub getval {
  print " Podaj nazw wartoci dla elementu: ";
  chomp($_  =  <STDIN>);
  $_;
}