use strict; use Spreadsheet::ParseExcel; use Data::Dumper; use warnings; my $s_name; my $s_name2; my $attribute2; my $attribute; my $parser=Spreadsheet::ParseExcel->new(); my $workbook=$parser->parse('C:\Perl\perl_tests\Sample.xls'); if(!defined $workbook) { die $parser->error(),".\n"; } my $worksheet=$workbook->worksheet('Sheet1'); my %student_name; for my $row(1..$worksheet->row_range) { my $super_key=$worksheet->get_cell($row,0)->value; for my $col(0..4) { my $key=$worksheet->get_cell(0,$col)->value; my $cell=$worksheet->get_cell($row,$col); next unless $cell; my $value=$cell->value(); $student_name{$super_key}->{$key}=$value; } } foreach $s_name(sort keys %student_name) { foreach $attribute (keys%{$student_name{$s_name}}) { if($student_name{$s_name}{$attribute} eq "x") { print("$s_name-->$attribute\n"); } } print("\n"); } my %p_name; for my $row(1..$worksheet->row_range) { my $super_key2=$worksheet->get_cell($row,6)->value; for my $col(6..10) { my $key2=$worksheet->get_cell(0,$col)->value; my $cell2=$worksheet->get_cell($row,$col); next unless $cell2; my $value2=$cell2->value(); $p_name{$super_key2}->{$key2}=$value2; } } foreach $s_name2(sort keys %p_name) { foreach $attribute2 (keys%{$p_name{$s_name2}}) { if($p_name{$s_name2}{$attribute2} eq "x") { print("$s_name2-->$attribute2\n"); } } print("\n"); }