open CATEGORY, "categories.txt"; # ...or whatever... foreach $line ( ) { @ITEMS = split /\|/, $line; foreach $item ( @ITEMS ) { ($value, $key) = split /,/, $item; $LIST{$key} = $value; } } close CATEGORY; open DESC, "descriptions.txt"; # Same code as above, except key/value pairs are reversed. foreach $line ( ) { @ITEMS = split /\|/, $line; foreach $item ( @ITEMS ) { ($key, $value) = split /,/, $item; $LIST{$key} = $value; } } close DESC; # Now arrange for the output. open OUTFILE, ">output.txt"; foreach $reference ( sort keys %LIST ) { # Sometimes, it's a new category. These are most important. if ( $reference =~ /^\'\w\w\'$/ ) { print OUTFILE "\n"; } else { print OUTFILE "|"; } print OUTFILE "$reference,$LIST{$reference}"; } #### if ( $reference !~ /^\'\w+\d+\'$/ ) { # ... }