Sub::HandlesVia::HandlerLibrary::String - library of string-related methods
package My::Class { use Moo; use Sub::HandlesVia; use Types::Standard 'Str'; has attr => ( is => 'rwp', isa => Str, handles_via => 'String', handles => { 'my_append' => 'append', 'my_chomp' => 'chomp', 'my_chop' => 'chop', 'my_clear' => 'clear', 'my_cmp' => 'cmp', 'my_cmpi' => 'cmpi', 'my_contains' => 'contains', 'my_contains_i' => 'contains_i', 'my_ends_with' => 'ends_with', 'my_ends_with_i' => 'ends_with_i', 'my_eq' => 'eq', 'my_eqi' => 'eqi', 'my_fc' => 'fc', 'my_ge' => 'ge', 'my_gei' => 'gei', 'my_get' => 'get', 'my_gt' => 'gt', 'my_gti' => 'gti', 'my_inc' => 'inc', 'my_lc' => 'lc', 'my_le' => 'le', 'my_lei' => 'lei', 'my_length' => 'length', 'my_lt' => 'lt', 'my_lti' => 'lti', 'my_match' => 'match', 'my_match_i' => 'match_i', 'my_ne' => 'ne', 'my_nei' => 'nei', 'my_prepend' => 'prepend', 'my_replace' => 'replace', 'my_replace_globally' => 'replace_globally', 'my_reset' => 'reset', 'my_set' => 'set', 'my_starts_with' => 'starts_with', 'my_starts_with_i' => 'starts_with_i', 'my_substr' => 'substr', 'my_uc' => 'uc', }, ); }
This is a library of methods for Sub::HandlesVia.
append( $tail )
Arguments: Str.
Appends another string to the end of the current string and updates the attribute.
my $object = My::Class->new( attr => 'foo' ); $object->my_append( 'bar' ); say $object->attr; ## ==> 'foobar'
chomp()
Like chomp from perlfunc.
chomp
chop()
Like chop from perlfunc.
chop
clear()
Sets the string to the empty string.
my $object = My::Class->new( attr => 'foo' ); $object->my_clear; say $object->attr; ## nothing
cmp( $str )
Returns $object->attr cmp $str.
$object->attr cmp $str
cmpi( $str )
Returns fc($object->attr) cmp fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) cmp fc($str)
lc
fc
contains( $str )
Returns true iff the string contains $str.
$str
contains_i( $str )
Returns true iff the string contains $str case-insensitvely.
ends_with( $tail )
Returns true iff the string ends with $tail.
$tail
ends_with_i( $tail )
Returns true iff the string ends with $tail case-insensitvely.
eq( $str )
Returns $object->attr eq $str.
$object->attr eq $str
eqi( $str )
Returns fc($object->attr) eq fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) eq fc($str)
fc()
Returns fc($object->attr).
fc($object->attr)
ge( $str )
Returns $object->attr ge $str.
$object->attr ge $str
gei( $str )
Returns fc($object->attr) ge fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) ge fc($str)
get()
Gets the current value of the string.
my $object = My::Class->new( attr => 'foo' ); say $object->my_get; ## ==> 'foo'
gt( $str )
Returns $object->attr gt $str.
$object->attr gt $str
gti( $str )
Returns fc($object->attr) gt fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) gt fc($str)
inc()
Performs ++ on the string.
++
lc()
Returns lc($object->attr).
lc($object->attr)
le( $str )
Returns $object->attr le $str.
$object->attr le $str
lei( $str )
Returns fc($object->attr) le fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) le fc($str)
length()
Like length from perlfunc.
length
my $object = My::Class->new( attr => 'foo' ); say $object->my_length; ## ==> 3
lt( $str )
Returns $object->attr lt $str.
$object->attr lt $str
lti( $str )
Returns fc($object->attr) lt fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) lt fc($str)
match( $regexp )
Arguments: Str|RegexpRef.
Returns true iff the string matches the regexp.
my $object = My::Class->new( attr => 'foo' ); if ( $object->my_match( '^f..$' ) ) { say 'matched!'; }
match_i( $regexp )
Returns true iff the string matches the regexp case-insensitively.
my $object = My::Class->new( attr => 'foo' ); if ( $object->my_match_i( '^F..$' ) ) { say 'matched!'; }
ne( $str )
Returns $object->attr ne $str.
$object->attr ne $str
nei( $str )
Returns fc($object->attr) ne fc($str). Uses lc instead of fc in versions of Perl older than 5.16.
fc($object->attr) ne fc($str)
prepend( $head )
Prepends another string to the start of the current string and updates the attribute.
my $object = My::Class->new( attr => 'foo' ); $object->my_prepend( 'bar' ); say $object->attr; ## ==> 'barfoo'
replace( $regexp, $replacement )
Arguments: Str|RegexpRef, Str|CodeRef.
Replaces the first regexp match within the string with the replacement string.
my $object = My::Class->new( attr => 'foo' ); $object->my_replace( 'o' => 'a' ); say $object->attr; ## ==> 'fao' my $object2 = My::Class->new( attr => 'foo' ); $object2->my_replace( qr/O/i => sub { return 'e' } ); say $object2->attr; ## ==> 'feo'
replace_globally( $regexp, $replacement )
Replaces the all regexp matches within the string with the replacement string.
my $object = My::Class->new( attr => 'foo' ); $object->my_replace_globally( 'o' => 'a' ); say $object->attr; ## ==> 'faa' my $object2 = My::Class->new( attr => 'foo' ); $object2->my_replace_globally( qr/O/i => sub { return 'e' } ); say $object2->attr; ## ==> 'fee'
reset()
Resets the attribute to its default value, or an empty string if it has no default.
set( $value )
Sets the string to a new value.
my $object = My::Class->new( attr => 'foo' ); $object->my_set( 'bar' ); say $object->attr; ## ==> 'bar'
starts_with( $head )
Returns true iff the string starts with $head.
$head
starts_with_i( $head )
Returns true iff the string starts with $head case-insensitvely.
substr( $start, $length?, $replacement? )
Arguments: Int, Optional[Int], Optional[Str].
Like substr from perlfunc, but is not an lvalue.
substr
uc()
Returns uc($object->attr).
uc($object->attr)
use strict; use warnings; package My::Person { use Moo; use Sub::HandlesVia; use Types::Standard qw( Str Enum ); has name => ( is => 'ro', isa => Str, required => 1, ); has status => ( is => 'rwp', isa => Enum[ 'alive', 'dead' ], handles_via => 'String', handles => { is_alive => [ eq => 'alive' ], is_dead => [ eq => 'dead' ], kill => [ set => 'dead' ], }, default => 'alive', ); # Note: method modifiers work on delegated methods # before kill => sub { my $self = shift; warn "overkill" if $self->is_dead; }; } my $bob = My::Person->new( name => 'Robert' ); say $bob->is_alive; ## ==> true say $bob->is_dead; ## ==> false $bob->kill; say $bob->is_alive; ## ==> false say $bob->is_dead; ## ==> true
See also MooX::Enumeration and MooseX::Enumeration.
use strict; use warnings; package My::Component { use Moo; use Sub::HandlesVia; use Types::Standard qw( Str Int ); has id => ( is => 'ro', isa => Int, required => 1, ); has name => ( is => 'ro', isa => Str, required => 1, handles_via => 'String', handles => { name_is_safe_filename => [ match => qr/\A[A-Za-z0-9]+\z/ ], _lc_name => 'lc', }, ); sub config_filename { my $self = shift; if ( $self->name_is_safe_filename ) { return sprintf( '%s.ini', $self->_lc_name ); } return sprintf( 'component-%d.ini', $self->id ); } } my $foo = My::Component->new( id => 42, name => 'Foo' ); say $foo->config_filename; ## ==> 'foo.ini' my $bar4 = My::Component->new( id => 99, name => 'Bar #4' ); say $bar4->config_filename; ## ==> 'component-99.ini'
Please report any bugs to https://github.com/tobyink/p5-sub-handlesvia/issues.
Sub::HandlesVia.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2020, 2022 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
To install Sub::HandlesVia, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Sub::HandlesVia
CPAN shell
perl -MCPAN -e shell install Sub::HandlesVia
For more information on module installation, please visit the detailed CPAN module installation guide.