Also du sagst es geht ganz normal mit:
open(DATENDATEI, "</artikel_text/rauchen.txt");
^^ da fehlt was
flock(DATENDATEI, LOCK_SH);
Dann wäre die Datei mal offen.
Vielleicht, vielleicht nicht :))
Variabeln in Perl beginnen ja mit dem Dollarzeichen z. B. "$Text".
Nö:
Strings und Referenzen beginnen mit $
$string
$reference
@array
%hash
aber
$array[0]; erstes Array-Element
$hash{'somekey'}; ein Hashelement
Verwirrend, aber am Schluss weiss man immer, was man vor sich hat.
Der Rest ist mir noch etwas suspect. Zielte deine Antwort darauf ab, daß ich den Text in rauchen.txt sogar als Block mit Umbrüchen schreiben könnte, und dann dein Konstrukt den Absatz in ein einzeiligen Strig verwandelt?
'Einzeilig' wäre er erst dann, wenn du nachträglich die \n entfernst.
Diese Zeile habe ich nicht verstanden:
my string = "";
open( FH, "<", $path ) or die("$!, Textdatei nicht gefunden.");
^^^^^^^^^^^^^^ ^
$path? FH? wenn Datei nicht da ist stop (oder stirb *g*)
FH ist kurz für Filehandle
$path: Das File mit Pfad das du öffnen willst
open( FH, "<", $path ) # besser
und
open( FH, "<$path" ) # weniger besser
können oder können nicht gleichwertig sein, je nachdem woher dein $path kommt.
Ich darf auch schreiben:
my $fh = 'TEST';
open($fh, "<", $file) or die ....
Ich kann also das Filehandle in einer Variable speichern.
Persönlich habe ich es noch nicht gebraucht.
Gibt es keine Art $Text = read (all)?
sub suck_all{
# schreibe es selbst;
}
Die schlechte Nachricht:
Perl ist nicht PHP
Die gute Nachricht:
Perl ist nicht PHP
Programmiererpflicht nr 1: Prüfe stets, ob ein Vorgang auch zum gewünschten Resultat führt.
or die() ist nur dann angebracht, wenn das File wirklich vorhanden sein muss, da sonst der weitere Betrieb unsinnig wird.
Wenn das File nicht vorhanden ist, wirst du etwas machen wollen wie
or return('some val');
kehre aus deiner sub zurück und mache, was man in einem solchen Fall aus der Programmlogik weiter tun würde.
or error('case') # eine eigene Fehlerroutine
<FH> ist der Zeilenoperator über dem geöffneten Filehandle.
Es kommt darauf an, ob der Kontext String oder List ist.
$string = <FH>; das gesamte File in einem String, eventuell ist das böse.
$array = <FH>; jede Zeile mit \n am Schluss als Element des Arrays übergeben.
mfg Beat
Selber klauen ist schöner!