http://qs321.pair.com?node_id=1203140


in reply to Replacing single quotes to two single quotes inside map

Assuming you don't mind changing $data->{$_} directly (rather than making a copy) ...

my $sql = exec_select( "call store_proc(" . join(',', ('?') x @allparm +s ) . ")", map { $data->{$_} =~ s/'/''/g; $data->{ $_ } | +| '' } @allparms );

Replies are listed 'Best First'.
Re^2: Replacing single quotes to two single quotes inside map
by Anonymous Monk on Nov 10, 2017 at 21:24 UTC
    Could you explain the pros and cons about changing $data->{$_} rather than making a copy of it?

      The pros/cons are mostly about whether or not you need the original values of $data->{$_} elsewhere since the substitution operation will change the value in-place. If you require the original value prior to the change elsewhere in your code, then clearly you don't want to change them. tybalt89 gave a similar version where the value is returned and not changed, but it requires a relatively recent perl (>= 5.14). I didn't notice if you mentioned a perl version, but some unfortunate people are still on 5.10.1 and such.