The Weekly Challenge - 117

TASK #1: Missing Row
You are given text file with rows numbered 1-15 in random order but there is a catch one row in missing in the file.

#!/usr/bin/perl
use strict;
use warnings;

my %rows = (
    1 => 'One', 2 => 'Two', 3 => 'Three', 4 => 'Four', 5 => 'Five', 6 => 'Six',
    7 => 'Seven', 8 => 'Eight', 9 => 'Nine', 10 => 'Ten', 11 => 'Eleven',
    12 => 'Twelve', 13 => 'Thirteen', 14 => 'Fourteen', 15 => 'Fifteen',
);

my @nums = 1..15;
my %seen;

while (<DATA>) {
    my ($no) = split /,/;
    $seen{$no} = 1;
}

# Build a new array of numbers that are missing
my @missing = grep { !$seen{$_} } @nums;

# There should be only one missing number
my $missing = $missing[0];

print "Missing: $missing, Line $rows{$missing}\n"; # Output: Missing: 12, Line Twelve

__DATA__
11, Line Eleven
1, Line One
9, Line Nine
13, Line Thirteen
2, Line Two
6, Line Six
8, Line Eight
10, Line Ten
7, Line Seven
4, Line Four
14, Line Fourteen
3, Line Three
15, Line Fifteen
5, Line Five