#!/user/bin/perl use strict; use warnings; ############# Set up Input File ##################### # # Output will be to the terminal, in OP's code the # results would be output to the spreadsheet or to # a .csv file that a spreadsheet could read # my $dir = 'c:/Documents and Settings/xxxxxx/'; my $inFileName = 'MeshInputData.txt'; my $inFile = $dir . $inFileName; open(IN,"<",$inFile)||die "Can't open input file $inFileName: $!\n"; # open(OUT,">",$outFile)||die "Can't open output file $outFileName: $!\n"; ##################################################### # # Read the file and process each line from input file # one at a time per OP's preference. # my %codes = (); my @diseases = (); my @meshes = (); foreach my $line (){ $i++; chomp($line); my($code,$codeIndex,$disease,$mesh) = $line =~ /^(.+),([0-9]+),(.+),(MESH:(?:[a-zA-Z0-9]+))$/; if(exists $codes{$code}){ @diseases = @{$codes{$code}[0]}; @meshes = @{$codes{$code}[1]}; push(@diseases,$disease); push(@meshes,$mesh); $codes{$code} = [[@diseases],[@meshes]]; } else { @diseases = ($disease); @meshes = ($mesh); $codes{$code} = [[@diseases],[@meshes]]; } } ############################################## # # Display the results to the terminal # $i = 0; foreach my $code (keys %codes){ $i++; my $diseases_ref = $codes{$code}[0]; my $meshes_ref = $codes{$code}[1]; my @diseases = @{$diseases_ref}; my @meshes = @{$meshes_ref}; my $diseases = join(",",@diseases); my $meshes = join(",",@meshes); print "$i: ($code),($diseases),($meshes)\n"; } exit(0);