in reply to Re: how to push multiples row of values into hash and do comparison
in thread how to push multiples row of values into hash and do comparison
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 ?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: how to push multiples row of values into hash and do comparison
by tybalt89 (Monsignor) on Oct 22, 2018 at 14:27 UTC |