NAME Syntax::Keyword::Inplace - syntax for making inplace changes to variables SYNOPSIS use Syntax::Keyword::Inplace; my $var = "some value here"; inplace uc $var; # equivalent to $var = uc $var; print $var; # prints "SOME VALUE HERE" DESCRIPTION This module provides a syntax plugin that implements a single keyword, inplace, which acts on function calls (or function-like perl operators) to make them modify the target expression. Perl has a large number of function-like operators that look at a single expression argument and return some new value based on it. Sometimes the result of calling one of these is immediately assigned back into the same variable again, in code that looks like $var = func($var). It is for these situations where this module is intended to apply. KEYWORDS inplace inplace FUNC( EXPR ) The inplace keyword modifies the behaviour of the following expression, which must be a function call or function-like core perl operator, which takes exactly one argument. That single argument must be valid as an lvalue (i.e. the target of an assignment). At runtime the function is called on that argument expression and the result of the function call is stored back into that expression. my $var = ...; inplace foo( $var ); # equivalent to $var = foo( $var ) If the expression is more complex than a single variable directly, then any side-effects involved in generating it only happen once. inplace foo( $hash{some_function_call()} ); # equivalent to # my $tmp_key = some_function_call(); # $hash{$tmp_key} = foo( $hash{$tmp_key} ); AUTHOR Paul Evans