in reply to Re^3: substitute characters in the RHS of a search & replace
in thread substitute characters in the RHS of a search & replace
... a generic function to simulate /r ...
Defining functions that take 'naked' subroutine blocks is, IMHO, one of the few valid reasons for using prototypes. However, there's a subtle pitfall here that belies the word 'generic' in the description of the function. The use of the $ prototype causes behavior that will almost certainly cause puzzlement in a wider, i.e., more generic, context by imposing scalar context on its argument. Better, I think, to use @ instead.
>perl -wMstrict -le "sub rx (&$) { my $c_regex = shift; local $_ = shift; $c_regex->(); return $_; } ;; my $s = 'a b c'; print rx { s/ /_/g } $s; ;; my @ra = 'p q r'; print rx { s/ /_/g } @ra; " a_b_c 1 >perl -wMstrict -le "sub rx (&@) { my $c_regex = shift; local $_ = shift; $c_regex->(); return $_; } ;; my $s = 'a b c'; print rx { s/ /_/g } $s; ;; my @ra = 'p q r'; print rx { s/ /_/g } @ra; " a_b_c p_q_r
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: substitute characters in the RHS of a search & replace
by LanX (Saint) on Mar 09, 2013 at 20:07 UTC | |
by AnomalousMonk (Archbishop) on Mar 09, 2013 at 21:04 UTC |
In Section
Seekers of Perl Wisdom