Alexander (HH): die PHP function "empty" übernehmen

Beitrag lesen

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".