#!/usr/local/bin/perl -w open (DATA, "data.txt") or die "Error"; undef $/; # slurp mode $body=; close DATA; while ( $body =~ /\[(\w+)\]<\/tag1>.*(.*)<\/tag2>/g ) { print "[$1] => [$2]\n"; }