#!/usr/bin/env perl -l use strict; use warnings; use Text::CSV; use Inline::Files; my %data; my $csv = Text::CSV::->new; while (my $row = $csv->getline(\*FILE1)) { $data{$row->[0]}{stride_length} = $row->[1]; } while (my $row = $csv->getline(\*FILE2)) { @{$data{$row->[0]}}{qw{leg_length diet}} = @$row[1,2]; } print "$_ @{$data{$_}}{qw{stride_length leg_length}}" for sort { $data{$a}{stride_length} <=> $data{$b}{stride_length} } grep { $data{$_}{diet} eq 'herbivore' } map { $data{$_}{diet} ||= 'NA'; $data{$_}{stride_length} ||= 0; $data{$_}{leg_length} ||= 0; $_; } keys %data; __FILE1__ Euoplocephalus,1.87,quadrupedal Stegosaurus,1.90,quadrupedal Tyrannosaurus Rex,5.76,bipedal Hadrosaurus,1.4,bipedal Deinonychus,1.21,bipedal Struthiomimus,1.34,bipedal Velociraptor,2.72,bipedal __FILE2__ Hadrosaurus,1.2,herbivore Struthiomimus,0.92,omnivore Velociraptor,1.0,carnivore Triceratops,0.87,herbivore Euoplocephalus,1.6,herbivore Stegosaurus,1.40,herbivore Tyrannosaurus Rex,2.5,carnivore