#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my %dic; while () { chomp; my($columnA, $columnB) = split("\t", $_); $dic{$columnA} = $columnB; } print Dumper \%dic; my $regex = join ( "|", map {quotemeta} sort { length $a <=> length $b } keys %dic ); $regex = qr/(?