Qualcuno mi può aiutare a convertire questo script da perl a php??
grazie 1000

codice:
#!/usr/bin/perl

#
# Simple program that uses sub EAN13
# It reads standard input for codes and output
# the encoded string.
#


while ( !eof(STDIN) ) {
    $r = <STDIN>;

    $X = EAN13($r);

    if ( $X != -1 ) {
        print "$X\n";
    }
    else { print " \n"; }

}

sub EAN13 {

#
# Returns the string that encodes the first argument of the function
# (or -1 if something goes wrong)
# in order to be rendered using ean13.ttf , the GPL font from http://grandzebu.net/
# It accepts 12 or 13 chars in input.
# If you supply 13 digits, it check if the checksum is right.
#
# Input: a string containing the code
# Output: encoded string or -1
#
# Simone Fioravanti, simospa@gieffeedizioni.it
#

    my $inputCode = @_[0];
    my $i;
    my $first;
    my $checksum  = 0;
    my $barcode = "";
    my $inTableA;
    my $temp;

#
# Don't ask why, but leave it there.
# Took more time than the whole code to figure out!!
#

$inputCode  =~ s/[^0-9]//g;

#
# Allow 13 digits input - let's trust our users for now
#	                                

    if ( $inputCode =~ /^[0-9]{12}[0-9]?$/ ) {
        for ( $i = 1 ; $i < 12 ; $i += 2 ) {
            $checksum += ord( substr( $inputCode, $i, 1 ) ) - 48;
        }
        $checksum *= 3;
        for ( $i = 0 ; $i < 12 ; $i += 2 ) {
            $checksum += ord( substr( $inputCode, $i, 1 ) ) - 48;
        }
        $temp = ( 10 - $checksum % 10 ) % 10;

#
# Allow 13 digits input only if the 13th is a correct checksum
#

        if (   ( $inputCode =~ /^[0-9]{13}$/ )
            && ( substr( $inputCode, 12, 1 ) == $temp ) )
        {
            $inputCode = substr( $inputCode, 0, 12 );
        }
        if (   ( $inputCode =~ /^[0-9]{13}$/ )
            && ( substr( $inputCode, 12, 1 ) != $temp ) )
        {
            return (-1);
        }

        $inputCode .= $temp;
        chomp($inputCode);

        $barcode =
          substr( $inputCode, 0, 1 )
          . chr( 65 - 48 + ord( substr( $inputCode, 1, 1 ) ) );

        $first = ord( substr( $inputCode, 0, 1 ) ) - 48;

        for ( $i = 2 ; $i <= 6 ; $i++ ) {
            $inTableA = 0;

            if ( $i == 2 ) {
                if ( $first >= 0 && $first <= 3 ) { $inTableA = 1; }
            }
            elsif ( $i == 3 ) {
                if ( $first == 0 || $first == 4 || $first == 7 || $first == 8 )
                {
                    $inTableA = 1;
                }
            }
            elsif ( $i == 4 ) {
                if (   $first == 0
                    || $first == 1
                    || $first == 4
                    || $first == 5
                    || $first == 9 )
                {
                    $inTableA = 1;
                }
            }
            elsif ( $i == 5 ) {
                if (   $first == 0
                    || $first == 2
                    || $first == 5
                    || $first == 6
                    || $first == 7 )
                {
                    $inTableA = 1;
                }
            }
            elsif ( $i == 6 ) {
                if (   $first == 0
                    || $first == 3
                    || $first == 6
                    || $first == 8
                    || $first == 9 )
                {
                    $inTableA = 1;
                }
            }

            if ($inTableA) {
                $barcode .= chr( 65 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
            }
            else {
                $barcode .= chr( 75 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
            }
        }
        $barcode .= "*";

        for ( $i = 7 ; $i <= 12 ; $i++ ) {
            $barcode .= chr( 97 - 48 + ord( substr( $inputCode, $i, 1 ) ) );
        }
        $barcode .= "+";
    }
    else { $barcode = -1 }
    return $barcode;
}