diff --git a/lib/Parse/Arcconf.pm b/lib/Parse/Arcconf.pm index cc73f7ea53662da7128c0ffac94f4a04af885592..db594fcff74666e0c9f628f61a5a3715c33fd9e0 100644 --- a/lib/Parse/Arcconf.pm +++ b/lib/Parse/Arcconf.pm @@ -206,7 +206,15 @@ sub parse_config_fh } elsif ($line =~ /^\s+([^:]+)\s+:\s+(.*)$/) { my ($an, $av)= ($1, $2); $an=~ s/\s*$//; - $ctrl->{'logical drive'}{$current_logical_drive}{$an} = $av; + if (exists($ctrl->{'logical drive'}{$current_logical_drive}{$an})) { + if (ref ($ctrl->{'logical drive'}{$current_logical_drive}{$an}) eq 'ARRAY') { + push (@{$ctrl->{'logical drive'}{$current_logical_drive}{$an}} => $av); + } else { + $ctrl->{'logical drive'}{$current_logical_drive}{$an} = [$ctrl->{'logical drive'}{$current_logical_drive}{$an}, $av]; + } + } else { + $ctrl->{'logical drive'}{$current_logical_drive}{$an} = $av; + } } elsif ($line =~ /^\s+-+$/) { my $cat = <$fh>; $cat =~ s/^\s+(\S.*\S+)\s+/$1/;