Wären aus Perl ein paar Funktionen rausgeflogen, dann wäre DAS vielleicht nicht möglich.
Welche denn?
Beginnen wir "ganz BASIC" mit
- open()
Das verführt zu etwas wie open($FH, ">$file");
Nur ist eben in Linux jedes Zeichen außer NUL, also auch das '>'-Zeichen in Dateinamen erlaubt. Mit der Folge, dass mit $file = '>inputdatei' etwas wie open($FH, ">>inputdatei");
herauskommt.
Example:
#!/usr/bin/perl -w
$s='Hallo Welt';
$file='>test.txt'; # in der Realität z.B. aus dem Dateisystem ausgewählt, Benutzereingabe, weiß der Schwarze woher
open ($FH, ">$file");
print $FH $s;
close $FH;
~> ./test.pl
~> cat test.txt
Hallo Welt!
~> ./test.pl
~> cat test.pl
Hallo Welt!Hallo Welt!
Eigentlich sollte der Dateiinhalt in der Datei '>test.txt' ersetzt und nicht angehangen werden... Es gibt aber nicht mal eine Warnung. Lösung wäre open()
durch eine Funktion zu ersetzen, welche den Modus explizit als Parameter verlangt und nicht derart 'slappy' als Teil des Dateinamens zulässt.