in reply to Re^2: Inline substitution regex
in thread Inline substitution regex
It's hard to see s/this/that/ as an opperator! Because, err ... it looks like an expression
s/this/that/ *is* an expression. The expression consists of the substitution operator and its two operands (the search pattern and the replacement expression).
$text =~ s/this/that/ is also an expression. The expression consists of the binding operator (=~) and its two operands, the value to bind ($text) and the previously mentioned expression.
The binding operator does not return its LHS. It returns its RHS. As for the substitution operator, it does not return the variable to which it is bound.
the following which prints 7 as expected.
I'm not sure what you are saying. Are you saying $var = 3+4 returns the result of 3+4, so $text =~ s/this/that/ should return the result of s/this/that? That's wrong for two reasons.
$var = 3+4 does not return the result of 3+4. Scalar assignment returns its LHS operand as an lvalue, so $var is returned here.
And you're wrong about a corolation, because $text =~ s/this/that/ does return the result of s/this/that. The binding operator returns the result of its RHS operand.
I didn't say it's not possible for an operator to return it's LHS. As you've shown, scalar assignment returns its left-hand side. There's also boolean operators. They return either their LHS or RHS operands.
Better solution:
foreach (keys %{$ref_cookie}) { push @{$self->{cookies}}, /^-(.*)/, $ref_cookie->{$_}; }
The match operator returns what it captures.
Update: Remove trailing paren
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Inline substitution regex
by vitoco (Hermit) on Sep 29, 2009 at 13:26 UTC | |
by ikegami (Patriarch) on Sep 29, 2009 at 16:31 UTC | |
by vitoco (Hermit) on Sep 29, 2009 at 18:20 UTC | |
by ikegami (Patriarch) on Sep 29, 2009 at 23:50 UTC |