Query: perlx::maybe
OS: debian
Section: 3pm
Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar
PerlX::Maybe(3pm) User Contributed Perl Documentation PerlX::Maybe(3pm)NAMEPerlX::Maybe - return a pair only if they are both definedSYNOPSISYou once wrote: my $bob = Person->new( defined $name ? (name => $name) : (), defined $age ? (age => $age) : (), ); Now you can write: my $bob = Person->new( maybe name => $name, maybe age => $age, );DESCRIPTIONMoose classes (and some other classes) distinguish between an attribute being unset and the attribute being set to undef. Supplying a constructor arguments like this: my $bob = Person->new( name => $name, age => $age, ); Will result in the "name" and "age" attributes possibly being set to undef (if the corresponding $name and $age variables are not defined), which may violate the Person class' type constraints. (Note: if you are the author of the class in question, you can solve this using MooseX::UndefTolerant. However, some of us are stuck using non-UndefTolerant classes written by third parties.) To ensure that the Person constructor does not try to set a name or age at all when they are undefined, ugly looking code like this is often used: my $bob = Person->new( defined $name ? (name => $name) : (), defined $age ? (age => $age) : (), ); or: my $bob = Person->new( (name => $name) x!!(defined $name), (age => $age) x!!(defined $age), ); A slightly more elegant solution is the "maybe" function: "maybe $x => $y, @rest" This function checks that $x and $y are both defined. If they are, it returns them both as a list; otherwise it returns the empty list. If @rest is provided, it is unconditionally appended to the end of whatever list is returned. The combination of these behaviours allows the following very sugary syntax to "just work". my $bob = Person->new( name => $name, address => $addr, maybe phone => $tel, maybe email => $email, unique_id => $id, ); This function is exported by default.BUGSPlease report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=PerlX-Maybe <http://rt.cpan.org/Dist/Display.html?Queue=PerlX-Maybe>.SEE ALSOSyntax::Feature::Maybe. MooseX::UndefTolerant, PerlX::Perform, Exporter.AUTHORToby Inkster <tobyink@cpan.org>.COPYRIGHT AND LICENCEThis software is copyright (c) 2012 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 WARRANTIESTHIS 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.14.2 2012-05-03 PerlX::Maybe(3pm)
Similar Topics in the Unix Linux Community |
---|
Serach and delete |
What is your age? (Part 2) |
sed query |
replace space or spaces in a line of a file with a single : |
count number of rows based on other column values |