i want to know how kind of structure this code generates .... and how can i print it..
@toks = grep { $_->[0] !~ /^(and|with|has|wants|options|here)$/i } @toks; local ($poll, $user, $i); for($i=0; $i<@toks; $i++) { local $t = $toks[$i]; # Server options if ($t->[0] eq 'poll' || $t->[0] eq 'server' || $t->[0] eq 'skip' || $t->[0] eq 'defaults') { # Start of a new poll $poll = { 'line' => $t->[1], 'file' => $_[0], 'index' => scalar(@rv), 'skip' => ($t->[0] eq 'skip'), 'defaults' => ($t->[0] eq 'defaults') }; $poll->{'poll'} = $toks[++$i]->[0] if (!$poll->{'defaults'}); undef($user); push(@rv, $poll); } elsif ($t->[0] eq 'proto' || $t->[0] eq 'protocol') { $poll->{'proto'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'via') { $poll->{'via'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'port') { $poll->{'port'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'timeout') { $poll->{'timeout'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'interface') { $poll->{'interface'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'monitor') { $poll->{'monitor'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'auth' || $t->[0] eq 'authenticate') { $poll->{'auth'} = $toks[++$i]->[0]; } # User options elsif ($t->[0] eq 'user' || $t->[0] eq 'username') { $user = { 'user' => $toks[++$i]->[0] }; push(@{$poll->{'users'}}, $user); } elsif ($t->[0] eq 'pass' || $t->[0] eq 'password') { $user->{'pass'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'is' || $t->[0] eq 'to') { $i++; while($i < @toks && $toks[$i]->[1] == $t->[1]) { push(@{$user->{'is'}}, $toks[$i]->[0]); $i++; } $i--; } elsif ($t->[0] eq 'folder') { $user->{'folder'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'keep') { $user->{'keep'} = 1; } elsif ($t->[0] eq 'nokeep') { $user->{'keep'} = 0; } elsif ($t->[0] eq 'no' && $toks[$i+1]->[0] eq 'keep') { $user->{'keep'} = 0; $i++; } elsif ($t->[0] eq 'fetchall') { $user->{'fetchall'} = 1; } elsif ($t->[0] eq 'nofetchall') { $user->{'fetchall'} = 0; } elsif ($t->[0] eq 'no' && $toks[$i+1]->[0] eq 'fetchall') { $user->{'fetchall'} = 0; $i++; } elsif ($t->[0] eq 'ssl') { $user->{'ssl'} = 1; } elsif ($t->[0] eq 'nossl') { $user->{'ssl'} = 0; } elsif ($t->[0] eq 'no' && $toks[$i+1]->[0] eq 'ssl') { $user->{'ssl'} = 0; $i++; } elsif ($t->[0] eq 'preconnect') { $user->{'preconnect'} = $toks[++$i]->[0]; } elsif ($t->[0] eq 'postconnect') { $user->{'postconnect'} = $toks[++$i]->[0]; } else { # Found an unknown option! if ($user) { push(@{$user->{'unknown'}}, $t->[0]); } elsif ($poll) { push(@{$poll->{'unknown'}}, $t->[0]); } } if ($poll) { if ($i<@toks) { $poll->{'eline'} = $toks[$i]->[1]; } else { $poll->{'eline'} = $toks[$#toks]->[1]; } } } thanks..