use warnings; use strict; use Data::Dumper; my ( $re, $lin, @g ); my (@inarr) = ( 'stuff{tag}stuff', 'stuff blah {foo}', 'stuff blah foo ', 'stuff blah ' ); $re = '<(?:ig|igt|igo|igxo);.+?>'; foreach $lin (@inarr) { @g = ( $lin =~ m/$re/g ); print Dumper( \@g ); } # foreach __END__ $VAR1 = [ '', '' ]; $VAR1 = [ '' ]; $VAR1 = [ '' ]; $VAR1 = [ '' ];