Sha256: b2325530d2901b4c2010ad218e671aa95cb3ff484fcfdd9a0bcddb82edca04a0

Contents?: true

Size: 554 Bytes

Versions: 323

Compression:

Stored size: 554 Bytes

Contents

package Example;

use strict;
use warnings;

sub keep { [ _filter(@_, 1) ] }
sub discard { [ _filter(@_, 0) ] }

sub _filter {
    my ($list, $function, $is_keeping) = @_;

    die "ArgumentError: 2nd parameter must be a function reference" unless ref $function eq 'CODE';

    my @result;

    foreach my $element (@$list) {
        if ($is_keeping) {
            push @result, $element if $function->($element);
            next;
        }
        # discard
        push @result, $element unless $function->($element);
    }

    return @result;
}

1;

Version data entries

323 entries across 323 versions & 1 rubygems

Version Path
trackler-2.2.1.105 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.104 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.103 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.102 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.101 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.100 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.99 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.98 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.97 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.96 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.95 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.94 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.93 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.92 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.91 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.90 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.89 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.88 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.87 tracks/perl5/exercises/strain/Example.pm
trackler-2.2.1.86 tracks/perl5/exercises/strain/Example.pm