John W. Krahn wrote:
> Why the for loop?
>
> my @list = $word =~ /(?=(.{$size}))/g;
>
>
>> # print Dumper \...@list; #for testing only
>> }
Because you sent it with a loop. It also seems faster.
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
# Make Data::Dumper pretty
$Data::Dumper::Sortkeys = 1;
$Data::Dumper::Indent = 1;
# Set maximum depth for Data::Dumper, zero means unlimited
$Data::Dumper::Maxdepth = 0;
my $Testing = $ARGV[0] || 0;
use Benchmark qw(:all);
my $word = "thequickbrown";
my $size = 3;
if( $Testing ){
via_arrays();
via_substr();
via_unpack();
via_match();
via_match2();
via_match3();
}else{
cmpthese( 50_000, {
'via arrays' => \&via_arrays,
'via substr' => \&via_substr,
'via unpack' => \&via_unpack,
'via match' => \&via_match,
'via match2' => \&via_match2,
'via match3' => \&via_match3,
});
}
sub via_arrays {
my @array = split //, $word;
my $max = @array - $size;
my @list = ();
for my $i ( 0 .. $max ){
push @list, join '', @array[ $i .. $i+$size-1 ];
}
# print Dumper \...@list; #for testing only
}
sub via_substr {
my $max = length( $word ) - $size;
my @list = ();
for my $i ( 0 .. $max ){
push @list, substr( $word, $i, $size );
}
# print Dumper \...@list; #for testing only
}
sub via_unpack {
my $max = length( $word ) - $size;
my @list = ();
for my $i ( 0 .. $max ){
push @list, (unpack( "A${i}A$size", $word ))[1];
}
# print Dumper \...@list; #for testing only
}
sub via_match {
my @list = ();
push @list, substr( $word, $-[0], 3 )
while $word =~ /.(?=..)/g;
# print Dumper \...@list; #for testing only
}
sub via_match2 {
my @list = ();
push @list, $_ for $word =~ /(?=(.{$size}))/g;
# print Dumper \...@list; #for testing only
}
sub via_match3 {
my @list = $word =~ /(?=(.{$size}))/g;
# print Dumper \...@list; #for testing only
}
--
Just my 0.00000002 million dollars worth,
Shawn
Programming is as much about organization and communication
as it is about coding.
I like Perl; it's the only language where you can bless your
thingy.
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/