#!/bin/perl -w $| = 1; # Pufferung de Ausgabe ausschalten use strict; use warnings; use CGI qw( :all *form ); use CGI::Carp qw( fatalsToBrowser ); my $cgi = new CGI; my $DEBUG=1; my $database   = "database.dat"; my $eingabefeld  = $cgi->param('eingabefeld'); my $operation = $cgi->param('operation') || ''; my $eintragen = 'eintragen'; my $parameterok = 0; $parameterok = ( defined $cgi->param('new')  or defined $cgi->param('operation')             and not defined $cgi->param('sosenden')  );              if ( $parameterok ) {  print $cgi->header(),     $cgi->start_html ( -title   => "Test" );       if ( $DEBUG ) {     print '--------------', $cgi->br(),     join $cgi->br(), $cgi->param('eingabefeld'), $cgi->param('operation'), $cgi->param('new'), $cgi->param('sosenden'),      '--------------', $cgi->br();  } } else {  print $cgi->redirect( url() . "?operation=anzeigen" );     }      if ($operation eq $eintragen) { eintragen(); } elsif ($operation  eq 'anzeigen') { anzeigen(); } elsif (defined $cgi->param('new') ){ sosenden(); } elsif (defined $cgi->param('sosenden') ) {  datenlesenschreiben();     $cgi->delete_all();   print $cgi->redirect( url() . "?operation=anzeigen" );      exit; } if ( $parameterok ) {     print $cgi->end_html(); } exit; sub anzeigen { # nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!  $cgi->delete_all();    print $cgi->a( { -href    => $cgi->url() . '?' . "operation=$eintragen" }, 'Eintragen' );  print $cgi->br();    open DATABASE, '<', $database or die "$database kann leider nicht geoeffnet werden, weil $!";  flock DATABASE, 2;  while ( my $inLine = ) {      chomp( $inLine );      my ( $eingabefeld ) = split /\|/, $inLine;      print "$eingabefeld";      $inLine ++;  }  close DATABASE; } sub eintragen { # nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!  $cgi->delete('operation');  $cgi->delete('sosenden');    print $cgi->start_form( -action=>url() ),    $cgi->textfield( -name=>'eingabefeld' ),    $cgi->submit( -name=>'new', -value=>'go'),    $cgi->end_form(); } sub sosenden {  # nicht benötigte Parameter löschen, wegen sticky Modus bei CGI!  $cgi->delete('operation');  $cgi->delete('new');    print $cgi->start_form(  -action=>url() ),    $cgi->submit( -name=>'sosenden', value=>'Ja, so senden'), $cgi->br(),    $cgi->hidden( -name=> 'eingabefeld', -value=>$eingabefeld, -override=>1),    "$eingabefeld",    $cgi->end_form(); } sub datenlesenschreiben {  open DATABASE, '>>', $database or die "$database kann leider nicht geoeffnet werden, weil $!"; # Anhängen  flock DATABASE, 2;  print DATABASE "$eingabefeld\n";  close DATABASE; } 1;