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..

Reply via email to