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.