#!/usr/bin/perl -T use strict; use warnings; use CGI; use CGI::Carp qw(fatalsToBrowser); my $FilePath = '/home/username/public_html/files/'; my $Cgi = CGI->new; my %Dat = $Cgi->Vars; if (exists $Dat{func} && $Dat{func} eq 'writes') {    writes ($Dat{datei}); } elsif (exists $Dat{func} && $Dat{func} eq 'writed') {    writed ($Dat{datei}, $Dat{text}); } else {    first(); } sub first{  printhead('Datenschreiber');  print $Cgi->p('In welche Datei soll geschrieben werden?'),    $Cgi->start_form,    $Cgi->textfield (-name => 'datei', -size => 40),    $Cgi->hidden (-name => 'func', -default => 'writes'),    $Cgi->submit (-value => 'Senden'),    $Cgi->end_form;  printfoot(); } sub writes{  my ($file) = @_;  if ($file =~ /([.\w-]+)/) {   # nur Folgen von A-Z, a-z, 0-9, ., - oder _ zulassen      $file = $1;  } else {      $file = 'test.dat';       # Fallback  }  open(DATEI, '<', $FilePath . $file) or die "Kann Datei $file nicht lesen: $!";  my @zeilen = ;  close DATEI;  printhead('Datenschreiber');  print $Cgi->p("In der Datei $file steht Folgendes:"),    $Cgi->p(join '
', @zeilen);  print $Cgi->p('Wollen Sie etwas schreiben, so geben Sie es hier ein:'),    $Cgi->start_form,    $Cgi->textarea (-name => 'text', -rows => 10, -columns => 40, -wrap => 'virtual'),    $Cgi->br,    $Cgi->hidden (-name => 'func', -default => 'writed'),    $Cgi->hidden (-name => 'datei', -default => $file),    $Cgi->submit (-value => 'Speichern'),    $Cgi->reset (),    $Cgi->end_form;  printfoot(); } sub writed{  my ($file, $text) = @_;  if ($file =~ /([.\w-]+)/) {   # nur Folgen von A-Z, a-z, 0-9, ., - oder _ zulassen      $file = $1;  } else {      $file = 'test.dat';       # Fallback  }  open(DATS, '>>', $FilePath . $file) or die "Kann Datei $file nicht schreiben: $!";  print DATS $text;  close(DATS);  printhead('Datenschreiber');  $text =~ s/\n/
/g;  print $Cgi->h1("Schreiben erfolgreich!"),    $Cgi->p("In die Datei $file wurde Folgendes geschrieben:"),    $Cgi->p($text);  printfoot(); } sub printhead {  my ($title) = @_;  print $Cgi->header(),    $Cgi->start_html($title); } sub printfoot {  print $Cgi->end_html; }