use Data::Dumper qw/Dumper/;
my $xls_path = "c:/path_to_xls.xlsx";
my $xls = $excel->Workbooks->Open("$xls_path");
foreach my $sheet ( in $xls->Worksheets )
{
$San ={};
$San->{name} = $sheet->Name, $/;
my $San_data = $xls->Worksheets("$San->{name}");
my @Colum_A = $San_data->UsedRange->{'Value'};
## what datastructure are we working with?
print "SAN : $San->{name}\n";
print Dumper \@Colum_A;
}
####
use strict;
use warnings;
use Data::Dumper qw/Dumper/;
#my $xls_path = "c:/path_to_xls.xlsx";
#my $xls = $excel->Workbooks->Open("$xls_path");
## just for testing
my $xls = [qw/san1 san2/];
my $data;
#foreach my $sheet ( $xls->Worksheets ){
for my $sheet ( @$xls ){
print "Data in SAN : $sheet\n";
## store each san as a hashref
my $San ={};
#$San->{name} = $sheet->Name, $/;
$San->{name} = $sheet;
#my $San_data = $xls->Worksheets("$San->{name}");
#my @Colum_A = $San_data->UsedRange->{'Value'};
## again, just for testing
my @Colum_A = qw/ RDUB010
34:34:36:7U
87:23:89:6C
RDUB090
90:39:12:6U
34:34:36:7Z
87:23:89:6N
34:38:36:7U
/;
## process each array element and print something appropriate
## also store data into a HoH / HoA
my $current = 'not_defined'; # place holder
foreach my $element (@Colum_A){
if ($element =~ /^RD/){
print "\tSAN : $San->{name}\n\t - LUN : $element\n";
$current = $element;
}
elsif ( $element =~ /^(?:[^:]{2}:){3}[^:]{2}$/){
# untested! should match
# 60:05:08:b2:00:bb:b6:93
print "\t\tWW : $element\n";
push @{ $San->{LUN}->{$current} }, $element;
}
else {
warn "Unrecognised input : \'$element\'\n";
}
}
## add San to data
push @$data, $San;
}
## print out data structure
print "\n-----> DATA\n";
print Dumper $data;
## and again
print "\n-----> OUTPUT\n";
foreach my $san (@$data){
print "SAN : $san->{name}\n";
foreach my $lun( keys %{ $san->{LUN} } ){
print " - LUN : $lun\n";
print "\tWW : $_\n" for @{ $san->{LUN}->{$lun} }
}
}
####
Data in SAN : san1
SAN : san1
- LUN : RDUB010
WW : 34:34:36:7U
WW : 87:23:89:6C
SAN : san1
- LUN : RDUB090
WW : 90:39:12:6U
WW : 34:34:36:7Z
WW : 87:23:89:6N
WW : 34:38:36:7U
Data in SAN : san2
SAN : san2
- LUN : RDUB010
WW : 34:34:36:7U
WW : 87:23:89:6C
SAN : san2
- LUN : RDUB090
WW : 90:39:12:6U
WW : 34:34:36:7Z
WW : 87:23:89:6N
WW : 34:38:36:7U
-----> DATA
$VAR1 = [
{
'LUN' => {
'RDUB090' => [
'90:39:12:6U',
'34:34:36:7Z',
'87:23:89:6N',
'34:38:36:7U'
],
'RDUB010' => [
'34:34:36:7U',
'87:23:89:6C'
]
},
'name' => 'san1'
},
{
'LUN' => {
'RDUB090' => [
'90:39:12:6U',
'34:34:36:7Z',
'87:23:89:6N',
'34:38:36:7U'
],
'RDUB010' => [
'34:34:36:7U',
'87:23:89:6C'
]
},
'name' => 'san2'
}
];
-----> OUTPUT
SAN : san1
- LUN : RDUB090
WW : 90:39:12:6U
WW : 34:34:36:7Z
WW : 87:23:89:6N
WW : 34:38:36:7U
- LUN : RDUB010
WW : 34:34:36:7U
WW : 87:23:89:6C
SAN : san2
- LUN : RDUB090
WW : 90:39:12:6U
WW : 34:34:36:7Z
WW : 87:23:89:6N
WW : 34:38:36:7U
- LUN : RDUB010
WW : 34:34:36:7U
WW : 87:23:89:6C