#!/usr/bin/perl # http://perlmonks.org/?node_id=1147112 use strict; use warnings; my %id; open my $fhdata, '<', 'File1' or die "$! opening File1"; open my $fhorder, '<', 'File2' or die "$! opening File2"; $id{ s/;.*//r } .= $_ for sort <$fhdata>; print delete @id{ <$fhorder> }, sort values %id; close $fhdata; close $fhorder;