#!/usr/bin/perl use warnings; use strict; use Data::Dumper; use XML::Simple; my %xhash=(); my $file= $ARGV[0]; my $simple = XML::Simple->new(); my $xhash = $simple->XMLin($file); print Dumper($xhash); exit; open FH,"config.ini" or die $!; my $line; my %c_hash=(); my $c_hashRef = ''; my @tmpA = (); sub recur($); foreach $line (){ $line=~s/^(\s+)(.*)/$2/i; $line=~s/(.*?)(\s+)$/$2/i; chomp($line); if ($line ne ''){ $_=$line; $c_hashRef = ''; my @array = split(m/\|\|/, $line); print Dumper($c_hashRef); ($c_hashRef,@tmpA) = recur(\@array); } } print Dumper($c_hashRef); exit; sub recur($) { my $arrRef = $_[0]; my @procArr = @$arrRef; my $assign = ''; my %c_hash = (); my @tmpArr = @procArr; shift(@tmpArr); my $arr = $procArr[0]; if ($arr=~m/\[(.*)=(.*)\]/ig) { $assign = $1; my $tmpVal = ''; $tmpVal = $2; $tmpVal =~ s/\=(.*?)/$1/ig; $c_hash{$assign}{'repval'} = $tmpVal; ($c_hash{$assign}{'addval'},@tmpArr) = recur(\@tmpArr); $arr = shift(@tmpArr); if ($arr) { if ($arr=~m/\[(.*)=(.*)\]/ig) { my $key = $1; my $tmpVal = ''; $tmpVal = $2; $tmpVal =~ s/\=(.*?)/$1/ig; $c_hash{$key}{'repval'} = $tmpVal; ($c_hash{$key}{'addval'},@tmpArr) = recur(\@tmpArr); $arr = shift(@tmpArr); } } } return (\%c_hash, @tmpArr); }