sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #86341
Re: Gennerering af liste / gennemløb af predef. scope
"Michael Schmidt" <m.schmidt@xxxxxxxx> writes:
>> Hvis du kan nøjes med a-z eller A-Z kan perl:
>>
>> perl -le '$n = pop(); $ext = "aaa"; print "Fast gentagen tekst her
>> ", $ext++ for 1 .. $n' 30
[...]
> Tæt på, men ikke helt nok.
Nå, så kan jeg ikke lige gøre det på en linje:
#!/usr/bin/perl -l
$lines = shift;
$lines ||= 10;
sub make_inc {
my @order = @_;
my %index;
my $i = 0;
$index{$_} = $i++ for @order;
return sub {
my @string = reverse split //, $_[0];
for (@string) {
$_ = @order[ ($index{$_} + 1) % scalar(@order) ];
last unless $_ eq $order[0];
}
return join "", reverse @string;
}
}
my $inc = make_inc(a .. e, A .. E, 1 ..4);
$text = "aaaa";
for (1 .. $lines) {
print "foo: $text";
$text = &$inc($text);
}
__END__
Du stiller på hvilke tegn den bruger i linjen:
my $inc = make_inc(a .. e, A .. E, 1 ..4);
make_inc() er en funktion der tager en liste af tegn og genererer en
passende inc()-funktion. Hvis der er et tegn der optræder flere gange
i listen er resultatet udefineret.
--
Peter Makholm | Perhaps that late-night surfing is not such a
peter@xxxxxxxxxxx | waste of time after all: it is just the web
http://hacking.dk | dreaming
| -- Tim Berners-Lee
Follow ups
References