Raik: zu PHP

Beitrag lesen

Hallo, alle!

  
$a=r(999999998);  
$b=(r(50)+32)*10000+r(11)*100+r(27);  
$c=(r(5)+2)*10000+r(11)*100+r(27);  
printf("%09d%01dD<<%06d%01d<%06d%01d<<<<<<%01d\n",$a,c($a),$b,c($b),$c,c($c),(c($a)*8+c($b*100+c($b)*10)+c($c*10+c($c)))%  
10);  
sub r{  
    1+int(rand($_[0]));  
    }  
sub c{  
    $x=shift;  
    $t=0;  
    $s=1;  
    while($x){  
        $t+=($x%10)*$s;  
        $x=int($x/10);  
        $s=$s<6?(1+($s*2)):1  
        }  
    $t%10  
    }  

ich möchte dieses script nach php übertragen, bin mir aber mangels perl-kenntnissen nicht sicher, ob ich soweit alles richtig gemacht habe:

  
<?php  
$a=r(999999998);  
$b=(r(50)+32)*10000+r(11)*100+r(27);  
$c=(r(5)+2)*10000+r(11)*100+r(27);  
printf("%09d%01dD<<%06d%01d<%06d%01d<<<<<<%01d\n",$a,c($a),$b,c($b),$c,c($c),(c($a)*8+c($b*100+c($b)*10)+c($c*10+c($c)))%10);  
function r($i){  
     return 1+(int)(rand($i));  
     }  
function c($i){  
     $x=array_shift($i);  
     $t=0;  
     $s=1;  
     while($x){  
          $t+=($x%10)*$s;  
          $x=(int)($x/10);  
          $s=$s<6?(1+($s*2)):1;  
          }  
     return $t%10;  
     }  
?>  

es tritt ein fehler in 1+(int)(rand($i)); auf, obwohl die doku aussagt, dass die argumente optional sind.
ein weiterer fehler tritt in $x=array_shift($i); auf. da bin ich über die perl-syntax ratlos. wieso wird da in perl der variablen $x die funktion shift zugewiesen??? wie werden in perl parameter an die subroutinen übergeben?

freundl. Grüsse aus Berlin, Raik

--
Der IE ist wichtig. Man benötigt ihn, um sich einen Browser zu besorgen.
Resizeable Textarea 0.1a