-
Perl Wordlist Generator
Das habe ich gerade geschrieben, bei Fragen könnt ihr euch gerne melden.
Hier nochmal im Pastebin:http://pastebin.com/yWDVZT0k
Code:
#! /usr/bin/perl
use warnings;
print "How many characters to use: ";
chomp($how_many = <STDIN>);
print "Which characters to use: ";
chomp($characters = <STDIN>);
sub doIt {
my $i;
if($_[1] eq 0) {
print $_[0]."\n";
}
else {
for($i=0; $i le length($characters)-1; $i++) {
doIt($_[0].substr($characters, $i, 1), $_[1]-1);
}
}
}
doIt("", $how_many);
-
rekursiver algo ;)
echt nice geschrieben, wie sinnvoll das ganze jetz ist ist mir egal, aber der code ist nice.
-
Die Option, das ganze in einer Art Wordlist abzuspeichern wäre noch eine nette Funktion. So rennt das Script im Terminal und das wars. ;)
-
Freut mich, dass es euch gefällt.
Hier das ganze noch einmal, doch jetzt kann man es auch in einer Datei abspeichern:
Pastebin: http://pastebin.com/GhEab6KH
Code:
#! /usr/bin/perl
use warnings;
print "How many characters to use: ";
chomp($how_many = <STDIN>);
print "Which characters to use: ";
chomp($characters = <STDIN>);
print "Enter filename to save to:";
chomp($filename = <STDIN>);
open $fh, '>', $filename;
sub doIt {
my $i;
if($_[1] eq 0) {
print $fh $_[0]."\n";
}
else {
for($i=0; $i le length($characters)-1; $i++) {
doIt($_[0].substr($characters, $i, 1), $_[1]-1);
}
}
}
doIt("", $how_many);
close($fh);
Ich werde eventuell morgen das ganze mit Tk verpacken, einfach um bisschen Tk zu lernen.
-
-
Danke, so sieht das wirklich schon besser aus.
Eigentlich hatte ich dieses Programm in C geschrieben (abends im Bett auf den Netbook, und WLAN funzt nicht), und nun wollte ich es nach Perl portieren, um eben den Umgang mit Perl zu üben.
Ich denke ich werde das jetzt mal öfters tun.
Aber gibt es eigentlich noch andere Methoden, eine Wordlist zu generieren?
-
Code:
my ($word, $chars, $num, $fh) = ($_[0], $_[1], $_[2], $_[3]);
wird zu
Code:
my ($word, $chars, $num, $fh) = @_;
Code:
sub remove_duplicates {
my @array = split('', $_[0]);
my $chars = '';
foreach (@array) {
if ($chars !~ /$_/) {
$chars .= $_;
}
}
return $chars;
}
wird zu
Code:
sub remove_duplicates {
my @dub = split('', shift);
my %tmp = map{$_, 1) @array;
my @uni = keys(%tmp);
return @uni;
}
ungetestet.
-
-
Du weisst schon das C != C++ ist oder?
-
Klar weiss ich das, aber ich code kein reines C++, da ist viel C mit dabei, wobei die Übergänge sowieso fliessend sind.
Dann deklarieren wir es halt als C++, weil man es mit einem C++-Compiler kompilieren muss.