Syntax:...Junction(3)
π NAME π
Okay bestie, welcome to the Syntax:...Junction(3) manual page, from the User Contributed Perl Documentation β¨. This module is Syntax::Keyword::Junction β comparisons against multiple values π
.
β¨ SYNOPSIS β¨
use Syntax::Keyword::Junction qw/ all any none one /;
if (any(@grant) eq 'su') {
...
}
if (all($foo, $bar) >= 10) {
...
}
if (qr/^\d+$/ == all(@answers)) {
...
}
if (all(@input) <= scalar @limits) {
...
}
if (none(@pass) eq 'password') {
...
}
if (one(@answer) == 42) {
...
}
or if you want to rename an export, use Sub::Exporter options:
use Syntax::Keyword::Junction any => { -as => 'robot_any' };
if (robot_any(@grant) eq 'su') {
...
}
π¦ DESCRIPTION π¦
This is a lightweight module which provides 'Junction' operators, the most commonly used being any and all π«Ά.
Inspired by the Perl 6 design docs, https://web.archive.org/web/20230922160729/https://raku.org/archive/doc/design/exe/E06.html#The%20Wonderful%20World%20of%20Junctions.
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 !=. Not =~ 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 all 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 any 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 no 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 one and only one 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
You can also use the map method:
my $numbers = any(qw/1 2 3 4 5/);
my $prime = $numbers->map( \&is_prime );
say for $prime->values; # prints 0, 1, 1, 0, 1
π 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 Syntax::Keyword::Junction;
if (Syntax::Keyword::Junction::any( @questions )) {
...
}
β οΈ WARNING β οΈ
When comparing against a regular expression, you must remember to use a regular expression object: qr/\d/ Not /d/ π. You must also use either == or !=. This is because =~ and !~ cannot be overridden. Do not forget this, bestie.
π TO DO π
Add overloading for arithmetic operators, such that this works:
$result = any(2,3,4) * 2;
if ($result == 8) {...}
π₯ SEE ALSO π₯
This module is actually a fork of Perl6::Junction with very few (initial) changes. The reason being that we want to avoid the incendiary name containing Perl 6 π.
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% improvement π₯.
https://web.archive.org/web/20230922160729/https://raku.org/archive/doc/design/exe/E06.html#The%20Wonderful%20World%20of%20Junctions β "The Wonderful World of Junctions".
π BUGS π
Please report any bugs or feature requests on the bugtracker website https://github.com/haarg/Syntax-Keyword-Junction/issues.
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature π«Ά.
π«Ά CONTRIBUTORS π«Ά
Arthur Axel 'fREW' Schmidt <frioux@gmail.com>Carl Franks <cpan@fireartist.com>David Steinbrunner <dsteinbrunner@pobox.com>Graham Knop <haarg@haarg.org>Maxime SoulΓ© <btik-cpan@scoubidou.com>Michael Schout <schoutm@gmail.com>Olivier MenguΓ© <dolmen@cpan.org>Paul Cochrane <paul.cochrane@posteo.de>Ricardo Signes <rjbs@cpan.org>Rob Hoelz <rob@hoelz.ro>
π AUTHORS π
Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>Carl Franks
π COPYRIGHT AND LICENSE π
This software is copyright (c) 2024 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
Okay bestie, that's the whole page π β this was Syntax:...Junction(3), from perl v5.42.0, dated 2024-08-21. Go off and junction responsibly π«Άβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-Syntax-Keyword-Junction 0.003009-bp160.1.11 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms