use strict; use warnings; use JSON::PP; use Data::Dumper; my $scrape = < $(function () { var opportunity = new US.Opportunity.CandidateOpportunityDetail({"Id":"10eb1d6c-359b-4f10-84d0-ca2525d88cce","Title":"Relationship Manager","Featured":false,"FullTime":true,"HoursPerWeek":null,"JobCategoryName":"Qualified Client Services","Locations":[{"Id":"dd1188b1-18d2-5e8d-9f93-aadbe1a3fd22","LocalizedName":"CA-Remote","LocalizedLocationId":null,"LocalizedDescription":"CA - Remote"}] }); EOF $scrape =~ m/\((\{.*\})\)/gms; my $json = $1; my $ref = decode_json $json; print Dumper $ref;