INPUT data:
R00009MM#R00009#2 C00027MM <=> C00007MM + 2 C00001MM
R00014MM#R00014#C00022MM + C00068MM + C00080MM <=> C05125MM + C00011MM
R00081MM#R00081#C00007MM + 4 C00126MM + 8 C00080MM <=> 4 C00125MM + 2 C00001MM + 4 C00080Cyto
R00086MM#R00086#C00008MM + C00009MM + 7 C00080Cyto <=> C00002MM + C00001MM + 7 C00080MM
R00094MM#R00094#2 C00051MM + C00003MM <=> C00127MM + C00004MM + C00080MM
####
OUTPUT expected.
R00081MM -> R00094MM
R00014MM -> R00086MM
R00081MM -> R00086MM
R00086MM -> R00081MM
R00094MM -> R00014MM
R00009MM -> R00081MM
####
#!/usr/bin/perl
use warnings;
use strict;
open (IN, "input.txt") || die $!;
#open (OUT,">output.txt") || die $!;
my %groups;
my @rxnGraph;
while () {
chomp $_;
my @rxn = split /#/, $_;
next if length $rxn[1] == 0;
my ($left_side, $right_side) = split /\s*<=>\s*/, $rxn[2];
my @left_els = split /\s*\+\s*/, $left_side;
my @right_els = split /\s*\+\s*/, $right_side;
my $x=0;
for ($x=0; $x<=$#left_els; $x++){
$left_els[$x]=~s/^[0-9]//;
if($left_els[$x]=~/C.*/){
#print ">>",$left_els[$x],"\n"
}
}
# print ">L>@left_els\n";
my $y=0;
for ($y=0; $y<=$#right_els; $y++){
$right_els[$y]=~s/^[0-9]//;
if($right_els[$y]=~/C.*/){
# print ">>>$right_els[$y]\n";
}
}
# print ">R>@right_els\n";
$groups{$_}{left} = $rxn[0] for @left_els;
$groups{$_}{right} = $rxn[0] for @right_els;
}
#while( my ($keys, $values) = each(%groups)){
#print ">>K>>>$keys\n";
#}
for my $grp (keys %groups) {
if (2 == grep exists $groups{$grp}{$_}, qw/left right/) {
print "$groups{$grp}{right} ->",
" $groups{$grp}{left}\n";
# push @rxnGraph, "$groups{$grp}{right},",
# " $groups{$grp}{left}\n";
}
}
#print OUT @rxnGraph;