Moin Moin!
ich würde gern die function emty() aus PHP in Perl umsetzen.
Die ist in Perl implizit vorhanden, ein Nachbauen ist unnötig.
http://de2.php.net/manual/en/function.empty.php sagt u.a.:
empty() is the opposite of (boolean) var, except that no warning is generated when the variable is not set.
Return Values
Returns FALSE if var has a non-empty and non-zero value.
The following things are considered to be empty:
* "" (an empty string)
* 0 (0 as an integer)
* "0" (0 as a string)
* NULL
* FALSE
* array() (an empty array)
* var $var; (a variable declared, but without a value in a class)
Mit anderen Worten:
if (empty($var)) { ... }
schreibst Du in Perl als
if (!$var) { ... }
oder lesbarer als
unless ($var) { ... }
Wobei Du statt eines Scalars auch direkt ein Array (@var) einsetzen kannst. Anders als in PHP kannst Du auch ein Hash (%var) einsetzen, das gilt als leer, wenn es keine Schlüssel enthält.
Wenn Du explizit einen boolschen Wert haben möchtest, castest Du die jeweilige Variable zu einem boolschen Wert, durch eine doppelte Negierung:
$scalarIsPHPEmpty=!!$scalar;
$arrayIsPHPEmpty=!!@array;
$hashIsPHPEmpty=!!%hash;
Siehe auch perldata.
Hab da schon folgenden ansatz:
Unnötig, und mit einigen groben Fehlern, siehe Patricks Posting.
Gewöhne Dir übrigens an, jedes Script mit
use strict;
use warnings;
zu beginnen. Bei SetUID- und SetGID-Scripten sowie bei Netzwerk-Anwendungen aller Art (CGIs, eigene Server) solltest Du außerdem den Taint-Mode einschalten und ALLE Eingaben validieren:
#!/usr/bin/perl -T
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".