Perlについて何年も聞いていたので、私はそれを数時間与えて、どれだけ手に入れることができるかを確認することにしました。私は基本をうまくやり遂げて、それからループに行きました。テストとして、最大4文字のすべての英数字の値を再帰的に処理するスクリプトを作成できるかどうかを確認したいと思いました。しばらく前に同じことをするPHPコードを書いていたので、同じ概念を採用して使用しました。ただし、スクリプトを実行すると、最初の3つの値として「a」が設定され、最後の桁のみがループされます。誰かが私が間違っているのを見ますか?
#!/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, '');
これは私がそれを実行したときに私が得るものです:
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