use strict;
use warnings;
use Data::Dumper;
my $input = "
CHANNEL123
CATEGORY123
TopCategory
This is TopCategory channel's Category
This is TopCategory channel's Category
0
Vod;Download
Channel456
cat456
TopCategory
This is TopCategory channel's Category
This is TopCategory channel's Category
0
Vod;Download
chann678
cat678
TopCategory
This is TopCategory channel's Category
This is TopCategory channel's Category
0
Vod;Download
";
my %hash;
while ($input =~ /((?:(?!<\/channelName>).)*)<\/channelName>\s*((?:(?!<\/name>).)*)<\/name>/gs){
$hash{$1} = $2;
}
print Dumper \%hash;
output:
-------
$VAR1 = {
'Channel456' => 'cat456',
'chann678' => 'cat678',
'CHANNEL123' => 'CATEGORY123'
};