use strict; use warnings; use JSON; my $string = read_json(); my $hashref = decode_json($string); for my $item (@{ $hashref->{items} }) { if (exists $item->{orderItemTitle}) { printf "Order Item Title: %s\n", $item->{orderItemTitle}; } } sub read_json { my $string =<<'EOS'; {\"order\\\\.shipTo\\\\.country\":\"US\",\"euddAccepted\":false,\"isFreeCart\":false,\"discount\ ... < most of input string omitted here > ... \"hasAnyDelayedDeliveryItems\":false,\"addOnSubtotal\":\"$0.00\",\"story\":\"FCF6F91A\"} EOS $string =~ s{ \\" }{"}gx; return $string; }