my $string = 'bla bla [[en:English]][[de:German]][[ga:Irish]] bla bla'; my $var = { lang => [ $string =~ m/\[ \[ ( en|de|ga ) : .+? \] \]/gx ] }; pp $var; { lang => ["en", "de", "ga"] }