[Pdx-pm] module recommendation: regex over data structure

benh ben.hengst at gmail.com
Sat Jun 15 11:22:38 PDT 2013


I agree though in my reading that is an expected feature:

> ...would replace foo with bar in all strings at all levels.

Though again I could also be completely missing the intent here so it
is a completely fair thing to mention.

On Sat, Jun 15, 2013 at 10:10 AM, Braden Kelley <bmk at rentrak.com> wrote:
> One potential problem with serializing using something like JSON::XS is a
> simple regex replace would also end up replacing hash keys, not just their
> values.
>
> # from Josh Heumann on Friday 14 June 2013:
>>Using YAML/JSON isn't a bad idea, but I'm worried about the
>>performance hit.
>
> As long as your replacement doesn't break quoting or otherwise trip on
> the serialization, yeah.  JSON::XS was super quick and the fastest
> serializer last time I checked.  You'll need the ram.
>
> Recursive implementation is easy enough.
>
> sub replace_deeply {
>   my ($data, $match, $replace) = @_;
>   my $r;
>   $r = sub {
>     my $ref = ref($_[0]) or return $_[0] =~ s/$match/$replace/;
>     if($ref eq 'ARRAY') {
>       $r->($_) for @{$_[0]}
>     }
>     elsif($ref eq 'HASH') {
>       $r->($_) for values %{$_[0]};
>     }
>   };
>   $r->($data);
>   return $data;
> }
>
> --Eric
> --
> ---------------------------------------------------
>     http://scratchcomputing.com
> ---------------------------------------------------
> _______________________________________________
> Pdx-pm-list mailing list
> Pdx-pm-list at pm.org
> http://mail.pm.org/mailman/listinfo/pdx-pm-list
>
> _______________________________________________
> Pdx-pm-list mailing list
> Pdx-pm-list at pm.org
> http://mail.pm.org/mailman/listinfo/pdx-pm-list



-- 
benh~

http://about.notbenh.info

Stability is not a Regression.


More information about the Pdx-pm-list mailing list