Perl Récursivité et de Fonctions

Avoir entendu parler de Perl pour l'année, j'ai décidé de lui donner quelques heures de mon temps pour voir combien j'ai pu récupérer. J'ai eu à travers les notions de base de l'amende et puis à boucles. Comme un test, j'ai voulu voir si je pouvais construire un script récursif à travers toutes les valeurs alphanumériques jusqu'à 4 caractères. J'avais écrit un code PHP qui fait la même chose il y a quelques temps donc j'ai pris le même concept et à l'utiliser. Cependant lorsque je lance le script, il met "une" que les 3 premières valeurs et ensuite seulement les boucles à travers le dernier chiffre. Quelqu'un voit ce que je fais de mal?

#!/usr/local/bin/perl 

$chars = "abcdefghijklmnopqrstuvwxyz";
$chars .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$chars .= "0123456789";

@charset = split(//, $chars);

$charset_length = scalar(@charset);

sub recurse
{
 ($width, $position, $base_string) = @_;

for ($i = 0; $i < $charset_length; ++$i) {
    $base = $base_string . $charset[$i];
    if ($position < $width - 1) {
        $pos = $position + 1;
        recurse($width, $pos, $base);
    }
    print $base;
    print "\n";
}
}

recurse(4, 0, '');

C'est ce que j'obtiens quand je le lance:

aaaa
aaab
aaac
aaad
aaae
aaaf
aaag
aaah
aaai
aaaj
aaak
aaal
aaam
aaan
aaao
aaap
aaaq
aaar
aaas
aaat
aaau
aaav
aaaw
aaax
aaay
aaaz
aaaA
aaaB
aaaC
aaaD
aaaE
aaaF
aaaG
aaaH
aaaI
aaaJ
aaaK
aaaL
aaaM
aaaN
aaaO
aaaP
aaaQ
aaaR
aaaS
aaaT
aaaU
aaaV
aaaW
aaaX
aaaY
aaaZ
aaa0
aaa1
aaa2
aaa3
aaa4
aaa5
aaa6
aaa7
aaa8
aaa9
aaa9
aaa9
aaa9
Vous passez 4 arguments sur la dernière ligne, mais n'utilisez que 3 dans le sous. Non pas que c'est la cause de votre erreur, mais juste sayin.
a toujours le même problème :/ j'ai corrigé le code ci-dessus.

OriginalL'auteur Chris | 2011-07-25