Thanks you for your response. I tried your code and it is awesome! However , I cannot get the output after i tried to modify your code. i want to get the input by using the $ARGV method.
#!/usr/bin/perl use strict; use warnings; use Data::Dump 'dd'; my $input1=$ARGV[0]; my $input2=$ARGV[1]; open my $fh1, '<', $input1 or die "Cannot open file : $!\n"; my %hash1 = gethash($fh1); close $fh1; open my $fh2,'<',$input2 or die "Cannot open file : $!\n"; my %hash2 = gethash($fh2); close $fh2; dd 'file1', \%hash1, 'file2', \%hash2; print "\t\tFile1\t\t\t\t\tFile2\n"; print "Name\tX1\tY1\tX2\tY2\t\tX1\tY1\tX2\tY2\n"; for my $key ( keys %hash1 ) { my $name = $key; for ( match( $hash1{$key}, $hash2{$key} ) ) { print "$name\t$_\t\t$_\n"; $name = ''; } } sub match { my ($one, $two) = @_; my @same; for my $item (@$one) { push @same, grep $item eq $_, @$two; } return @same; } sub gethash { local $_ = shift; s/^\s+//gm; s/[\t]+/\t/g; my %hash; while(/^name\s+(\S+)\n(num.*\n)*/gm ) { my $name = $1; $hash{$name} = [$& =~ /^num\s*(.*)/gm ]; } return %hash; }
Any idea ?
In reply to Re^2: how to push multiples row of values into hash and do comparison
by darkmoon
in thread how to push multiples row of values into hash and do comparison
by darkmoon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |