#  on peut aussi écrire le sous-programme AVANT le programme principal

sub fact {
 local ($ind )= @_  ; # transmission des paramètres
 local $res,$indmun ;
 if ( $ind == 0 ) {
    $res = 1;
 } else {
    $indmun = $ind-1;
    $res = &fact ($indmun) * $ind;
 } ; # fin de si
 return $res ; # renvoi de la valeur
} ; # fin de sub fact

############  programme principal

print "Donnez le nombre positif dont vous voulez la factorielle : " ;
chop ($nb = <STDIN>) ;
print "\nLa factorielle de ",$nb," est ",&fact( $nb),"\n\n" ;
exit(12345) ; # sortie avec code-retour explicite
