Hello. I would like to publish the modules described below. In particular, I'm requesting recommendations for a good name.
Frequently I write simple mutators as functions. The mutator should return a scalar when a scalar is passed and a list when a list is passed. I was looking for an existing solution, and concluding there was none, wrote my own. This module defines two function attributes as shown below: ## Example uses "lc" to represent an arbitrarily complex mutator sub lowercase : ScalarContext('first') { return map { lc } @_ ; } print scalar lowercase('Jim'), "\n" ; ## prints 'jim' instead of 1 There several variants: sub lowercase : ScalarContext('last') {...} ## returns the last element sub lowercase : ScalarContext('count') {...} ## default behavior sub lowercase : Listify {...} ## aristotle's response The Listify attribute was added after someone recommended "pasting a listify() function in every project" instead of this module. Maybe this is common practice; and if so, wouldn't a CPAN module be preferable? One option is to release this module as a pragma. Note the difference in invocation: ## Function::ReturnScalar name used in blog example use Function::ReturnScalar ; ## pragma use base Function::ReturnScalar ; ## standard I've posted this discussion on perlmonks and perl blogs: http://blogs.perl.org/users/jim_schueler/2013/07/function-return-in-scalar-context.html My question is basically: 1. Is there an existing module? (Apparently not) 2. Is this module useful to anyone else? 3. Code review of proposed solution I was hoping for more encouraging responses, which I've summarized as follows: 1. Non-specific attacks unrelated to the question about usefulness. 2. Generally used work-arounds are better (without explanation). 3. A couple indications that the module would be useful. Maybe these responses help test the moxie of a new wannabe contributor? Although the general response tone was discouraging, no one gave any specific reasons against release. And, at least, publishing this module will help *my* code base. I'd like to release this module following all the best practices. Can anyone help? Thanks! -Jim