Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Module for sets of strings, ordered, case-insensitive?

by tybalt89 (Prior)
on Dec 27, 2020 at 01:35 UTC ( #11125774=note: print w/replies, xml ) Need Help??


in reply to Module for sets of strings, ordered, case-insensitive?

Doesn't look that bad to me...

#!/usr/bin/perl -l use strict; # https://perlmonks.org/?node_id=11125762 use warnings; my $set = Some::Module->new(qw(oops foo bar bat)); print $set->contains('foo'); # true print $set->contains('FOO'); # true print $set->contains('Ops'); # false print $set->after('foo'); # 'bar' print $set->is_last('bar'); # false print $set->is_last('BAT'); # true print $set->is_last('bat'); # true package Some::Module; sub new { my $self = shift; bless [ @_ ], ref $self || $self; } sub contains { my ($self, $item) = @_; scalar grep /^\Q$item\E\z/i, @$self; } sub after { my ($self, $item, %hash) = @_; @hash{map lc, @$self} = @$self[1..$#$self]; $hash{lc $item}; } sub is_last { my ($self, $item) = @_; @$self ? $self->[-1] =~ /^\Q$item\E\z/i : 0; }

Outputs:

1 1 0 bar 1 1

EDIT: fixed some incorrect comments

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11125774]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2021-03-01 11:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?