#!/usr/bin/perl # http://perlmonks.org/?node_id=1169831 use strict; use warnings; $_ = < $a} /\t(\d+)\t/g] = 1..tr/\n//; s/\t\K(\d+)(?=\t)/$array[$1]/ge; @array[sort {$b <=> $a} /\b(\d+)$/gm] = 1..tr/\n//; s/\b(\d+)$/$array[$1]/gem; print;