GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PERL6::JUNCTION (3)

.ds Aq ’

NAME

Perl6::Junction - Perl6 style Junction operators in Perl5.

CONTENTS

SYNOPSIS



  use Perl6::Junction qw/ all any none one /;
 
  if (any(@grant) eq su) {
    ...
  }
 
  if (all($foo, $bar) >= 10) {
    ...
  }
 
  if (qr/^\d+$/ == all(@answers)) {
    ...
  }
 
  if (all(@input) <= @limits) {
    ...
  }
 
  if (none(@pass) eq password) {
    ...
  }
 
  if (one(@answer) == 42) {
    ...
  }



DESCRIPTION

This is a lightweight module which provides ’Junction’ operators, the most commonly used being any and all.

Inspired by the Perl6 design docs, <http://dev.perl.org/perl6/doc/design/exe/E06.html>.

Provides a limited subset of the functionality of Quantum::Superpositions, see SEE ALSO for comment.

Notice in the SYNOPSIS above, that if you want to match against a regular expression, you must use == or !=. <B>NotB> =~ or !~. You must also use a regex object, such as qr/\d/, not a plain regex such as /\d/.

SUBROUTINES

all()

Returns an object which overloads the following operators:



  <,  <=, >,  >=, ==, !=,
  lt, le, gt, ge, eq, ne,



Returns true only if <B>allB> arguments test true according to the operator used.

any()

Returns an object which overloads the following operators:



  <,  <=, >,  >=, ==, !=,
  lt, le, gt, ge, eq, ne,



Returns true if <B>anyB> argument tests true according to the operator used.

none()

Returns an object which overloads the following operators:



  <,  <=, >,  >=, ==, !=,
  lt, le, gt, ge, eq, ne,



Returns true only if <B>noB> argument tests true according to the operator used.

one()

Returns an object which overloads the following operators:



  <,  <=, >,  >=, ==, !=,
  lt, le, gt, ge, eq, ne,



Returns true only if <B>one and only oneB> argument tests true according to the operator used.

ALTERING JUNCTIONS

You cannot alter junctions. Instead, you can create new junctions out of old junctions. You can do this by calling the values method on a junction.



 my $numbers = any(qw/1 2 3 4 5/);
 print $numbers == 3 ? Yes : No;   # Yes

 $numbers = any( grep { $_ != 3 } $numbers->values );
 print $numbers == 3 ? Yes : No;   # No



EXPORT

’all’, ’any’, ’none’, ’one’, as requested.

All subroutines can be called by its fully qualified name, if you don’t want to export them.



  use Perl6::Junction;
 
  if (Perl6::Junction::any( @questions )) {
    ...
  }



WARNING

When comparing against a regular expression, you must remember to use a regular expression object: qr/\d/ <B>NotB> /d/. You must also use either == or !=. This is because =~ and !~ cannot be overriden.

TO DO

Add overloading for arithmetic operators, such that this works:



  $result = any(2,3,4) * 2;
 
  if ($result == 8) {...}



SUPPORT / BUGS

Submit to the CPAN bugtracker <http://rt.cpan.org>

SEE ALSO

Quantum::Superpositions provides the same functionality as this, and more. However, this module provides this limited functionality at a much greater runtime speed, with my benchmarks showing between 500% and 6000% improvment.

<http://dev.perl.org/perl6/doc/design/exe/E06.html> - The Wonderful World of Junctions.

AUTHOR

Carl Franks

ACKNOWLEDGEMENTS

Thanks to Curtis "Ovid" Poe for the ALTERING JUNCTIONS changes in release 0.40000.

COPYRIGHT AND LICENSE

Copyright 2005, Carl Franks. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself (perlgpl, perlartistic).

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 PERL6::JUNCTION (3) 2013-08-21

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.