Got this to work, but is there a better way to do this?

#!/usr/bin/perl

use strict;
use warnings;

my ( $val, @matched, @unmatched, %hash1, %hash2 );

%hash1 = (
"emcpowera" => "sdbd sddg sdfj sdhm",
"emcpoweraa" => "sdae sdch sdek sdgn",
"emcpowerbc" => "sdb sdbe sddh sdfk",
"emcpowerc" => "sdbb sdde sdfh sdhk",
"emcpowerd" => "sdba sddd sdfg sdhj",
"emcpowerz" => "sdba sddd sdfg sdhj"
);

%hash2 = (
"emcpowera1" => "/dwpdb006",
"emcpoweraa1" => "/dwpdb033",
"emcpowerbc1" => "/s00_11",
"emcpowerbc2" => "/utl_file_dir",
"emcpowerc1" => "/odsdb006",
"emcpowerd1" => "/odsdb005"
);

foreach my $i (keys(%hash1)) {

       foreach my $b (keys(%hash2)) {

               if ($b =~ /$i[0-9]+/) {
                       $val = $b;
                       push @matched, "$i" . " $hash1{$i} " . "$b" . "
$hash2{$b} " . "\n";
               }
       }

       if (not $i =~ /$val*/) {
               push @unmatched, "$i" . " $hash1{$i} " . "\n";
       }
}

print " @matched";
print " @unmatched\n";

--- RESULT ---

 emcpoweraa sdae sdch sdek sdgn emcpoweraa1 /dwpdb033
 emcpowerd sdba sddd sdfg sdhj emcpowerd1 /odsdb005
 emcpowerc sdbb sdde sdfh sdhk emcpowerc1 /odsdb006
 emcpowerbc sdb sdbe sddh sdfk emcpowerbc1 /s00_11
 emcpowerbc sdb sdbe sddh sdfk emcpowerbc2 /utl_file_dir
 emcpowera sdbd sddg sdfj sdhm emcpowera1 /dwpdb006
 emcpowerz sdba sddd sdfg sdhj


--
Regards.
Wernher

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to