in reply to Re^4: substitute characters in the RHS of a search & replace
in thread substitute characters in the RHS of a search & replace

I think a call on @something should rather generate a warning instead of trying DWIM.

But no (good) idea how to implement that.

Maybe better iterate over all arguments and returning a list? something called rxmap maybe?

Cheers Rolf

Replies are listed 'Best First'.
Re^6: substitute characters in the RHS of a search & replace
by AnomalousMonk (Archbishop) on Mar 09, 2013 at 21:04 UTC

    Hmmm...     This is the best I could do, but it's a bit icky for Anonymonk's OPed application:

    >perl -wMstrict -le "sub rx (&@) { return map { local $_ = $_; ()= $_[0]->(); $_; } @_[1..$#_]; } ;; my $s = 'a b c d'; print rx { s/ /_/g } $s; ;; my @ra = ('p q r', 'x y z z y'); print rx { s/ /_/g } @ra; ;; my $x = q{Here are [[a [[ variable]] number [[of ]words]] in brackets}; print qq{'$x'}; ;; $x =~ s( \[\[ (.*?) \]\] )( (rx {s/ /_/g} $1)[0] )xmsge; print qq{'$x'}; " a_b_c_d p_q_rx_y_z_z_y 'Here are [[a [[ variable]] number [[of ]words]] in brackets' 'Here are a_[[_variable number of_]words in brackets'

    Bottom line:  s///r is a lot nicer. Thanks again to whoever thought of that one.