#!/usr/bin/perl # Splits a data file into unique files based on each lines first 6 characters use warnings; use strict; my $file = shift; bad_format() if ($file eq "" ); open FILE, $file or die "Could not open file [$file]\n"; my ($fname) = $file =~ m/(\w+)\..*/; my %files = (); while (my $line = ) { if ($line !~ /^\s*$/) { my $fc = substr($line, 0, 6); # first characters if (!exists $files{$fc}) { open ($files{$fc}, ">$fname\_$fc.txt") or die; } print {$files{$fc}} $line; } } while (my ($key, $value) = each (%files)) { print "Created $fname\_$key.txt\n"; close $value; } close FILE;