[Cologne-pm] Code-Review oder bin verwirrt

Christian Schneider cschneid at spinfo.uni-koeln.de
Thu Jul 3 12:55:47 CDT 2003


Guten Tag zusammen,

ich bin gerade dabei mir den Quelltext einer blog-Software anzusehen 
und bin verwirrt. Wer Lust hat, mag sich vielleicht mal die beiden 
Code-Ausschnitte ansehen und mir sagen, daß ich mir gewisse 
Perlkonstrukte doch noch mal genauer ansehen soll.

Grüße,

Christian


a) Ist es möglich, daß @dateplaced mehr als ein Element haben kann und 
daß somit die for-Schleife Sinn macht?

($type,$dateplaced,$timeplaced,$a,$b,$c)=split(/\|/,$linemainbox);
if ($type eq "active"){
	@dateplaced=$dateplaced;
	for $eachone (@dateplaced){
	    ($mon1,$day1,$year1)=split(/\./,$eachone);
	}
}


b) Hier verstehe ich den Typeglob am Anfang nicht. fval wird doch nur 
als array benutzt und das wird in der Zeile @fval = split(...) doch 
explizit gefüllt (fval wird im restlichen Skript auch nicht mehr 
benutzt und nein, der Autor benutzt kein strict). Was würde der 
Typeglob hier denn überhaupt machen?

sub GetFormInput {
     (*fval) = @_ if @_ ;
     local ($buf);
     if ($ENV{'REQUEST_METHOD'} eq 'POST') {
	  read(STDIN,$buf,$ENV{'CONTENT_LENGTH'});
     }
     else {
	  $buf=$ENV{'QUERY_STRING'};
     }
     if ($buf eq "") {
	  return 0 ;
     }
     else {
	@fval=split(/&/,$buf);
	foreach $i (0 .. $#fval){
	    ($name,$val)=split (/=/,$fval[$i],2);
	    $val=~tr/+/ /;
	    $val=~ s/%(..)/pack("c",hex($1))/ge;
	    $name=~tr/+/ /;
	    $name=~ s/%(..)/pack("c",hex($1))/ge;
	    if (!defined($field{$name})) {
		$field{$name}=$val;
	    }
	    else {
		$field{$name} .= "\0$val";
	    }
	}
     }
     return 1;
}




More information about the Cologne-pm mailing list