>perl -wMstrict -le "my $line = 'xxx:agent_id=>foo,yyy:agent_id=>b\"a\"r,zzz:agent_id=>\"baz\",qqq'; print qq{'$line'}; ;; my @agents; while ($line =~ m{ :agent_id=> (.+?) , }xmsg) { my $agent_id = $1; printf qq{extracted agent id: '$agent_id' }; $agent_id =~ s/\"//g; print qq{fixed agent id: '$agent_id'}; push @agents, $agent_id; } printf qq{'$_' } for @agents; " 'xxx:agent_id=>foo,yyy:agent_id=>b"a"r,zzz:agent_id=>"baz",qqq' extracted agent id: 'foo' fixed agent id: 'foo' extracted agent id: 'b"a"r' fixed agent id: 'bar' extracted agent id: '"baz"' fixed agent id: 'baz' 'foo' 'bar' 'baz'