Series.pm (752B) - raw
1 package Series; 2 3 use strict; 4 use warnings; 5 use feature qw<say>; 6 7 use Exporter qw<import>; 8 our @EXPORT_OK = qw<slices>; 9 10 sub slices { 11 my ($args) = @_; 12 13 my $series = $args->{series}; 14 my $slice_length = $args->{sliceLength}; 15 16 # order of error checking does matter 17 die "slice length cannot be zero" if $slice_length == 0; 18 die "slice length cannot be negative" if $slice_length < 0; 19 die "series cannot be empty" if ($series eq ""); 20 die "slice length cannot be greater than series length" 21 if $slice_length > length $series; 22 23 my @slices; 24 25 foreach my $index ( 0 .. (length $series) - $slice_length ) { 26 push @slices => substr( $series, $index, $slice_length ); 27 } 28 29 return \@slices; 30 } 31 32 1;