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: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to