Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
match::simple(3)      User Contributed Perl Documentation     match::simple(3)

NAME
       match::simple - simplified clone	of smartmatch operator

SYNOPSIS
	  use v5.10;
	  use match::simple;

	  if ($this |M|	$that)
	  {
	     say "$this	matches	$that";
	  }

DESCRIPTION
       match::simple provides a	simple match operator "|M|" that acts like a
       sane subset of the (as of Perl 5.18) deprecated smart match operator.
       Unlike smart match, the behaviour of the	match is determined entirely
       by the operand on the right hand	side.

       o   If the right	hand side is "undef", then there is only a match if
	   the left hand side is also "undef".

       o   If the right	hand side is a non-reference, then the match is	a
	   simple string match.

       o   If the right	hand side is a reference to a regexp, then the left
	   hand	is evaluated .

       o   If the right	hand side is a code reference, then it is called in a
	   boolean context with	the left hand side being passed	as an
	   argument.

       o   If the right	hand side is an	object which provides a	"MATCH"
	   method, then	it this	is called as a method, with the	left hand side
	   being passed	as an argument.

       o   If the right	hand side is an	object which overloads "~~", then a
	   true	smart match is performed.

       o   If the right	hand side is an	arrayref, then the operator recurses
	   into	the array, with	the match succeeding if	the left hand side
	   matches any array element.

       o   If any other	value appears on the right hand	side, the operator
	   will	croak.

       If you don't like the crazy Sub::Infix operator,	you can	alternatively
       export a	more normal function:

	  use v5.10;
	  use match::simple qw(match);

	  if (match($this, $that))
	  {
	     say "$this	matches	$that";
	  }

       If you're making	heavy use of this module, then this is probably	your
       best option, as it runs significantly faster.

   XS Backend
       If you install match::simple::XS, a faster XS-based implementation will
       be used instead of the pure Perl	functions. Depending on	what sort of
       match you are doing, this is likely to be several times faster. In
       extreme cases, such as matching a string	in an arrayref,	it can be
       twenty-five times faster, or more. However, where $that is a single
       regexp, it's around 30% slower.	Overall	though,	I think	the
       performance improvement is worthwhile.

       If you want to take advantage of	this speed up, use the "match"
       function	rather than the	"|M|" operator.	Otherwise all your gains will
       be lost to the slow implementation of operator overloading.

       The constant "match::simple::IMPLEMENTATION" tells you which backend is
       currently in use.

   Environment
       Setting the "MATCH_SIMPLE_IMPLEMENTATION" environment variable to "PP"
       encourages match::simple	to use the pure	Perl backend.

BUGS
       Please report any bugs to
       <http://rt.cpan.org/Dist/Display.html?Queue=match-simple>.

SEE ALSO
       match::smart.

       This module uses	Exporter::Tiny.

AUTHOR
       Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
       This software is	copyright (c) 2013-2014, 2017 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.

DISCLAIMER OF WARRANTIES
       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.

perl v5.32.1			  2017-01-31		      match::simple(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS | SEE ALSO | AUTHOR | COPYRIGHT AND LICENCE | DISCLAIMER OF WARRANTIES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=match::simple&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help