local $/; my $text = ; while ($text =~ /\[%(.*?)%\]/g) { print "$1\n"; } __DATA__ some text ... [% variable_name %] ... some more text [% variable_name2 %] [% variable_name3 %] ... some more text some text ... [% variable_name4 %]