sub getTypeName { my $typeNum = shift; if ($typeNum == 1) { return "A NAME"; } elsif ($typeNum == 2) { return "B NAME"; } elsif ($typeNum == 3) { return "C NAME"; } else { die "$typeNum not valid\n"; } } #### sub getTypeName { my $typeNum = shift; die "$typeNum not valid\n" unless 1 <= $typeNum && $typeNum <= 3; my $typeName = ('A' .. 'C')[$typeNum - 1] . " NAME"; return $typeName; } #### my $first = substr $line, 0, 2; my $second = substr $line, 2, 4; my $third = substr $line 10, 4; #### my ($first, $second, $junk, $third) = unpack "A2A4A4A4", $line; #### my ($first, $second, $third) = (unpack "A2A4A4A4", $line)[0,1,3]; # Or, you could do ... my ($first, $second, $third) = ($line =~ /(.{2})(.{4})(.{4})(.{4})/)[0,1,3]; #### my @colNames = qw(first second third); my %hash; @hash{@colNames) = (unpack "A2A4A4A4", $line)[0,1,3];