Using a hash lookup to specify the order; and a GRT to make it somewhat efficient:
#! perl -slw
use strict;
use Inline::Files;
use Data::Dump qw[ pp ];
my $n = 0;
my %order = map{ chomp; $_ => ++$n } <FILE2>;
my @data = <FILE1>;
my @sorted = map{
unpack 'x4A*', $_;
} sort map {
my( $key ) = m[(^[^;]+);];
pack 'NA*', $order{ $key } // 2**31, $_;
} @data;
pp \@sorted;
__FILE1__
1 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306=en
+g@106:2308;2309=eng:0:21000:2:2066:0
2 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2315=27:2316=NAR@4;2317=en
+g@106:2318;2319=eng:0:21020:2:2066:0
3 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2320=27:2321=NAR@4;2322=en
+g@106:2323;2324=eng:0:21030:2:2066:0
ITV HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR@4;2306=
+eng@106:2308;2309=eng:0:21000:2:2066:0
__FILE2__
3 HD
1 HD
2 HD
__OUTPUT__
C:\test>1147112.pl
[
"3 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2320=27:2321=NAR\@4;232
+2=eng\@106:2323;2324=eng:0:21030:2:2066:0",
"1 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR\@4;230
+6=eng\@106:2308;2309=eng:0:21000:2:2066:0",
"2 HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2315=27:2316=NAR\@4;231
+7=eng\@106:2318;2319=eng:0:21020:2:2066:0",
"ITV HD;BSkyB:11097:VC23M5O25P0S1:S28.2E:23000:2305=27:2307=NAR\@4;2
+306=eng\@106:2308;2309=eng:0:21000:2:2066:0",
]
With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
In the absence of evidence, opinion is indistinguishable from prejudice.