=> [ qw/match/ ],
},
};
use 5.010;
{
package SmartMatch::Sugar::Overloaded;
use overload '~~' => sub { $_[0]->(@_) };
}
sub match (&) { bless $_[0], "SmartMatch::Sugar::Overloaded" }
use co
ch friendly tests.
=head1 SYNOPSIS
use SmartMatch::Sugar;
if ( $data ~~ non_empty_array ) {
@$data;
}
if ( $object ~~ inv_isa("Class") {
}
=head1 DESCRIPTION
This module provides simple
d object in a smart match will cause an error
unless C<fallback> is true or the object overloads C<~~>, in which case the
matcher sub will not get a chance to work anyway.
=item stringifies
Returns
my $value = shift;
my @values = split( m{\s+}, $value );
my %values;
given ( $#values ) {
when ( 0 ) {
# top/bottom/left/right shorthand
for
my $self = shift;
my $url = shift;
my $provider = $self->get_http_provider();
given ( $provider ) {
when ( 'lite' ) { return $self->get_url_lite( $url ); }
when ( 'l
ttp->{'timeout'} = $self->get_http_timeout;
my $code = $http->request( $url );
given ( $code ) {
when ( 200 ) { return $http->body(); }
when ( 301 || 302 || 303 || 30
t_http_timeout );
my $resp = $http->get( $url );
my $code = $resp->code();
given ( $code ) {
when ( 200 ) { return $resp->decoded_content(); }
default { retu
{$_}{count} > $min_count; } keys %tags;
foreach (keys %tags) {
delete $tags{$_} unless @keepers ~~ /$_/;
}
my @ordered = sort { $tags{$a}{count} <=> $tags{$b}{count} } keys %tags;
my $high = $t
ut this way if the C< := > operator meant 'alias
the lhs to the rhs':
abbrev 'abc', 'xyz' ~~ $h{abc} = 'abc'
$h{ab} := $h{abc}
$h{
$self->_delay_upgrade($module) ) {
unshift @delayed_modules, $module;
next MODULE;
}
given ( $module->cpan_file() ) {
when (m{/Net-Ping-\d}msx) {
# Net::Ping seems to require that
$release_testing = 0;
my $overwritable = 0;
my $force = $default_force;
given ($dist) {
when (/Scalar-List-Util/msx) {
# Does something weird with tainting
$force
ecute_build
$dist->execute_build('install');
Executes a Module::Build script with the options given (which can be
empty).
=cut
sub execute_build {
my $self = shift;
my @params = @_;
$self->
t->execute_make('install');
Executes a ExtUtils::MakeMaker-generated makefile with the options given
(which can be empty) using the C<dmake> being installed.
=cut
sub execute_make {
my $self =
the following:
# $string =~ /abc/;
# into:
# $string ~~ /abc/;
push @items, {
text => Wx::gettext('Use ~~ for pattern matching'),
listener => sub {
#Replace fir
my $line_text = $editor->GetTextRange( $line_start, $line_end );
$line_text =~ s/\=\~/~~/;
$editor->SetSelection( $line_start, $line_end );
$editor->ReplaceSelection($line_tex
nto:
# $string !~~ /abc/;
push @items, {
text => Wx::gettext('Use !~~ for negated pattern matching'),
listener => sub {
#Replace first '!~' with '!~~' in the current line
');
$self->namespace ('');
$self->primitive ('no');
}
# return the same value as given (but others may override it - eg,
# Boolean changes here 1 to 'true'
sub _express_value {
a decent order, to minimize the
# distance between elements of the pairs.
#
# e.g. given ( [d,c], [a,b], [b,c] )
# the best ordering would be one of
# ( [a,b], [b,c], [c,d] )
r context. The first match at any position is returned.
$str = "abracadabra";
if $str ~~ m:overlap/ a (.*) a / {
@substrings = $/.matches(); # bracadabr cadabr dabr br
}
ontext, or a disjunction of matches in a scalar context.
$str = "abracadabra";
if $str ~~ m:exhaustive/ a (.*) a / {
@substrings = $/.matches(); # br brac bracad bracadabr
in a value context (void,
Boolean, string, or numeric), or when it is an explicit argument of
a C<~~>. Otherwise it's a rule constructor. So this:
$var = /pattern/;
no longer does the match
of C<@array>, in order.
If C<$indextest> is provided, only elements whose indices match
C<$index ~~ $indextest> are iterated. (To select on values use C<grep>.)
What is returned at each element of
as C<%hash> doesn't change.
If C<$keytest> is provided, only elements whose keys evaluate
C<$key ~~ $keytest> as true are iterated.
What is returned at each element of the iteration varies with fun
as literals
[Update: C<< <> >> is no longer the input operator. And C<=~> has been
replaced by C<~~>.]
which in Perl 5 we'd have to write as:
# Perl 5
my $target = <>;
<appendline>+
{ @$appendline =~ s/<in_marker>/</;
[Update: Smartmatch is now C<~~>.]
@$deleteline =~ s/<out_marker>/>/;
let $0 := "${to}c${from}\n"
$str =~ m{ /\* .*? \*/ }xs;
# Perl 6
$str =~ m{ /\* .*? \*/ };
[Update: Use C<~~> now.]
=item Remove leading qualifiers from a Perl identifier
# Perl 5
$ident =
will return 0 and issue
a warning.
=item pack
our buf8 multi pack( *@items where { all(@items) ~~ Pair } )
our buf8 multi pack( Str $template, *@items )
C<pack> takes a list of pairs and formats
me,0,1);
Optionally, you can use substr on the left hand side of an assignment
like so:
$string ~~ /(barney)/;
substr($string, $0.from, $0.to) = "fred";
If the replacement string is longer or sho
nite strings in
parallel, though that seems a bit scary.
[Update: The C<=~> operator is renamed C<~~>, and it doesn't automatically
"any-fy" an array anymore, so we could pretty easily make it work o
backtrack over C<< <cut> >>, the entire match
will fail.)
[Update: Now we can just say C<<@lines ~~ s/^.*? \n**{2...} //>>.]
=head2 RFC 110: counting matches
I think we can avoid using any options
ingly, that can also be written:
/ <( _/\d+/ =~ 1..10 )> /
[Update: That'd be C<< <?{ ~/\d+/ ~~ 1..10 }> >> these days.]
=head2 RFC 198: Boolean Regexes
Again, I'm not much in favor of inventi
<undef>';
$@ //= '<unknown error>';
die "retval:[$retval] \$\@:[$@]";
}
given ( ref $self->{output} ) {
when ( 'SCALAR' ){
${ $self->{output} } = $self->{_
');
$self->namespace ('');
$self->primitive ('no');
}
# return the same value as given (but others may override it - eg,
# Boolean changes here 1 to 'true'
sub _express_value {
range if no quality file was given (default: 30)
bad_qual Quality score to set for bases outside clear range
if no quality file was given (default: 10). If your
= shift;
my @args = @_;
my $minified = '';
foreach my $arg ( @args ) {
given ( $arg ) {
when ( -f $arg ) {
$minified .= $self->process_file( $arg
n",
$keys, $_, $caller, $filename, $linenum
unless $keys ~~ $keycheck;
} else {
die sprintf "key list not supported with type %s at
} elsif ( ! defined $value ) {
return $type & UNDEF;
} else {
given ( ref $value ) {
when ( '' ) { return $type & SCALAR };
default
die sprintf "value '%s' is not a legal value for $name\n", $value // '*undef*'
unless grep $_ ~~ $value, @$legit;
}
# ----------------------------------------------------------------------------