next up previous contents
Next: Les fonction recursives Up: Les sous programmes Previous: Les modules

Renvoyer un tableau depuis un sub

Les sub utilisent la fonction return pour retourner une valeur. Malheureusement, il n'est pas possible de retourner un tableau par ce moyen.

Il existe un substitut à cela, il suffit de renvoyer un scalaire qui pointe sur un tableau.

# ScanPort used to scans ports.
# &ScanPort($confFile)
sub ScanPort
{
        my $confFile = $_[0];
        my $host = Conffilemngt::ReadFile($confFile,"ip");
        my $count = 0;
        my $openPort = 0;
        my $test;
        my $value;
        my $returnTabular = [ ];
        while($openPort < 124)
        {
                $openPort = $openPort + 1;
                $value = new Net::Telnet (
            Timeout => 1000000,
                        Porti => $openPort);
                $test = eval{ $value->open($host)};
                if($test)
                {
                        $returnTabular->[$count] = $openPort;
                        $count = $count + 1;
                }
        }
        return $returnTabular;
}

C'est la variable $returnTabular qui pointe vers le tableau que nous allons remplir en provoquant simplement une itération du type $returnTabular->$count =

Pour lire un tel tableau, un foreach suffit, il doit être de la manière suivante : foreach $tmpValue (@$ethTable)

Ensuite, il est possible de récupérer la valeur de chaque cellule à la même manière qu'un simple tableau.



Stephane TOUGARD
6/20/2001