NAME
    CGI::AppBuilder::PLSQL - Oracle PL/SQL Procedures

SYNOPSIS
      use CGI::AppBuilder::Define;

      my $sec = CGI::AppBuilder::PLSQL->new();
      my ($sta, $msg) = $sec->exe_sql($ar);

DESCRIPTION
    This class provides methods for reading and parsing configuration files.

  new (ifn => 'file.cfg', opt => 'hvS:')
    This is a inherited method from CGI::AppBuilder. See the same method in
    CGI::AppBuilder for more details.

  def_inputvars($ar)
    Input variables:

      $ar   - array ref containing the following variables:
            pid             : project id such as ckpt, owb, dba, etc.
            task            : task name required such as task1,task2,etc.
            target(sel_sn1) : select one (DB/server name) defining sid
            args(sel_sn2)   : select two (Arguments)
            task_fn         : task file name containing all the tasks defined
            svr_conn        : host/server connection info
            db_conn         : db connection info for each target/server
            task_conn       : special connection for tasks. 
                              It overwrites db_conn for the task
            HA_*            : hash array

    Variables used or routines called:

      None

  read_text_file($fn, $dvr)
    sub read_text_file { my $s = shift; my ($fn, $dvr) = @_; if (!$fn) {
    carp " No file name is specified."; return; } if (!-f $fn) { carp " File
    - $fn does not exist!"; return; }

        my ($t);
        open FILE, "< $fn" or
            croak "ERR: could not read to file - $fn: $!\n";
        while (<FILE>) {
            # skip comment and empty lines
            next if $_ =~ /^\s*#/ || $_ =~ /^\s*$/; 
            s/\s*[^'"\(]#[^'",\)].*$//;     # remove inline comments
            chomp;                          # remove line break
            $t .= $_;
        }
        close FILE;
        return $t;
    }