#!/usr/bin/perl use strict; use warnings; use Storable; my %fwd; my $file = $ARGV[0] || 'phase1.data'; open(my $fh, '<', $file) or die "Unable to open '$file' for reading: $!"; my $n; while ( <$fh> ) { chomp; my ($nform, $word) = split /\t/; $fwd{$word} = ++$n; } my %sol_fh; for (1 .. 26) { my $file_name = sprintf("%.2d", $_) . ".data"; open($sol_fh{$_}, '>', $file_name) or die $!; } $file = $ARGV[1] || 'phase5.data'; open($fh, '<', $file) or die "Unable to open '$file' for reading: $!"; while ( <$fh> ) { chomp; my ($nform, undef, @words) = split /\t/; $_ = $fwd{$_} for @words; print { $sol_fh{length($nform)} } $nform, "\t", (join "-", @words), "\n"; } my %rev = reverse %fwd; store \%rev, 'sol.rev';