#!/usr/bin/perl use strict; use warnings; use Tie::File; my $source_file = './source.txt'; tie my @array,'Tie::File',$source_file or die $!; my $string = $array[0]; chomp $string; my $source = substr($string,0,index($string,'|',index($string,'|')+1)); my $dest = substr($string,index($string,'|',index($string,'|')+2)); my @sources = grep{$_}split(/[\s|]+/,$source); my @dests = grep{$_}split(/[\s|]+/,$dest); for(1..scalar(@array)-1){ $string = $array[$_]; my $source2 = substr($string,0,index($string,'|',index($string,'|')+1)); my $dest2 = substr($string,index($string,'|',index($string,'|')+2)); my @tmp = grep{defined $_ and $_ ne ''}split(/[\s|]+/,$source2); my @info = map{$sources[$_]}grep{$tmp[$_]}(0..scalar(@tmp)-1); @tmp = grep{defined $_ and $_ ne ''}split(/[\s|]+/,$dest2); my @targets = map{$dests[$_]}grep{$tmp[$_]}(0..scalar(@tmp)-1); print join(',',@info),' --> ',join(',',@targets),";\n"; } untie @array;