Moderne Altenative zu index.php
bearbeitet von Regina Schaukrug> > 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:**
~~~perl
#!/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.
Moderne Altenative zu index.php
bearbeitet von Regina Schaukrug> > 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:**
~~~perl
#!/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 dem Modus explizit verlangt und nicht als Teil des Dateinamens zulässt.
Moderne Altenative zu index.php
bearbeitet von Regina Schaukrug> > 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:**
~~~perl
#!/usr/bin/perl -w
$s='Hallo Welt';
$file='>test.txt';
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 dem Modus explizit verlangt und nicht als Teil des Dateinamens zulässt.
Moderne Altenative zu index.php
bearbeitet von Regina Schaukrug> > 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 auch das '>'-Zeichen in Dateinamen erlaubt. Mit der Folge, dass mit $file = '>inputdatei' etwas wie `open($FH, ">>inputdatei");` herauskommt.
**Example:**
~~~perl
#!/usr/bin/perl -w
$s='Hallo Welt';
$file='>test.txt';
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 dem Modus explizit verlangt und nicht als Teil des Dateinamens zulässt.
Moderne Altenative zu index.php
bearbeitet von Regina Schaukrug> > Wären aus Perl ein paar Funktionen rausgeflogen, dann wäre DAS vielleicht nicht möglich.
> Welche denn?
* open()
Das verführt zu etwas wie open($FH, ">$file");
Nur ist eben in Linux auch das '>'-Zeichen in Dateinamen erlaubt. Mit der Folge, dass mit $file = '>inputdatei' etwas wie `open($FH, ">>inputdatei");` herauskommt.
**Example:**
~~~perl
#!/usr/bin/perl -w
$s='Hallo Welt';
$file='>test.txt';
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 dem Modus explizit verlangt und nicht als Teil des Dateinamens zulässt.