#!/usr/bin/perl #Warnungen und Fehlemeldungen einschalten use strict; use warnings; #das Script ist UTF-8 use utf8; #CGI-Modul laden #und sagen das alles UTF-8 ist use CGI ( -utf8 ); #Modul um Fehler im Browser ausgeben use CGI::Carp 'fatalsToBrowser'; #Modul um Dateien sperren zu können. Siehe "flock" use Fcntl qw(:flock); #Dateiname my $storage_file = 'myText.txt'; #Default Wert, wenn nichts eingeben wurde. my $str = 'Dies ist die Zeile, die verändert werden kann.'; # Das HTML das angezeigt werden soll my $template = <<'EOHTML';

Hello World

Die nachfolgende Zeile kann Text aufnehmen:
EOHTML # neue CGI-Instanz erzeugen my $cgi = CGI->new(); # schauen ob eine Datei mit dem text da ist, # Daten mit UTF-8 kodierung lesen if(open(my $fh, '<:encoding(UTF-8)', $storage_file)) { #Zeilenumbrüche nicht beachten local $/=undef; # ganze Datei lesen $str = <$fh>; close($fh); } # ein string wurde gesendet if( my $s = $cgi->param('newText') ) { # Daten übernehmen $str = $s; # Datei zum schreiben öffnen, Daten mit UTF-8 Kodierung schreiben open(my $fh, '>encoding(UTF-8)', $storage_file) or die("ERROR OPEN $storage_file ($!)"); # Datei sperren das nur ein Prozess schreiben darf flock($fh, LOCK_EX); # daten schreiben print $fh $str; # datei wider freigeben close($fh); } #platzhalter im Template ersetzen $template=~s/<\!--INSERT_TEXT_HERE-->/$str/g; $template=~s/INSERT_URL_HERE/$cgi->url()/eg; #Header ausgeben der Inhalt ist UTF-8 print "Content-Type: text/html; charset=UTF-8\r\n\r\n"; # Ausgabe UTF-8 kodieren; binmode(STDOUT,'encoding(UTF-8)'); #template ausgeben print $template;