Cheers - L~R#!/usr/bin/perl use strict; use warnings; package Random_Char; use PadWalker 'peek_my'; sub TIESCALAR { bless {}, $_[0] } sub STORE { return 1 } sub FETCH {my @c=keys%{{map{$_=>undef}split//,${peek_my(1)->{'$string' +}}}};return $c[rand @c];} package main; tie my $rand_char, "Random_Char"; my $string = 'One bright day in the middle of the night'; my ($char) = $string =~ /($rand_char)/; print "$char\n";
Update:
Here is another that is a bit more fragile that doesn't use modules.
It works on the form ($char) =~ "some string" =~ /($rand_char)/;
#!/usr/bin/perl use strict; use warnings; package Random_Char; sub TIESCALAR { bless {}, $_[0] } sub STORE { return 1 } sub FETCH {open(I,$0);my $l;while(<I>){$l=$_ and last if$.==(caller)[2 +]} $l =~ s/^.*=\s*(["'])(.*)\1\s*=~.*$/$2/;my @c=keys%{{ map{$_=>undef}split//,$l}};return $c[rand @c]; } package main; tie my $rand_char, "Random_Char"; my ($char) = 'One bright day in the middle of the night' =~ /($rand_ch +ar)/; print "$char\n";
In reply to Re: Pick a random string char with a regex
by Limbic~Region
in thread Pick a random string char with a regex
by bsb
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |