A mi no me funciona tu solución, con el ejemplo que has puesto.
Lo curioso es que la clave1 no está entrecomillada...
Esta es otra solución:
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14;
my $decoded_content = '{"indice":{"username":"user1","test":nada,"clave":clave1},{"username":"user2","test":nada,"clave":"clave2"}}';
while ($decoded_content =~ m/username":"(\w*?)".*?clave":"?(\w*?)"?\}/g) {
say "$1 $2";
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora bien... parece que lo que te devuelve está en formato JSON, así que se puede hacer de forma programática y mucho más limpia:
Using perl Syntax Highlighting
#!/usr/bin/perl
use v5.14;
use Mojo::JSON;
my $json = Mojo::JSON->new;
my $hash = $json->decode('{"indice":[{"username":"user1","test":"nada","clave":"clave1"},{"username":"user2","test":"nada","clave":"clave2"}]}');
#say $json->error;
#use Data::Dumper;
#say Dumper \$hash;
for my $hash_ref (@{$hash->{'indice'}}) {
say "$hash_ref->{'username'}: $hash_ref->{'clave'}";
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Pero para que funcione,
debe ser formato JSON, y el ejemplo que has puesto no es conforme a ese estándar (sí lo es el que está en este último ejemplo).