http://qs321.pair.com?node_id=984030


in reply to SQL script processor and executor

A few formatting comments:

I think qq and combined statements are clearer here:

if ($shpath) { #print SH "chmod 700 $shpath/shell_$ts.sh\n"; #print SH "$shpath/shell_$ts.sh\n"; #print SH "rm $shpath/shell_$ts.sh\n"; #push @cmd, "pscp -pw \"${passwd}\" \"${shell}\" ${user}\@${serv +er}:${shpath}/shell_$ts.sh\n"; #push @cmd, "plink -batch -pw \"${passwd}\" ${user}\@${server} - +m \"${sh}\" >> \"${output}\" 2>${outerr}\n"; print SH "chmod 700 $shpath/shell_$ts.sh\n", "$shpath/shell_$ts.sh\n", "rm $shpath/shell_$ts.sh\n"; push @cmd, qq[pscp -pw "${passwd}" "${shell}" ${user}\@${server} +:${shpath}/shell_$ts.sh\n], qq[plink -batch -pw "${passwd}" ${user}\@${server} -m + "${sh}" >> "${output}" 2>${outerr}\n]; } else { ...

You have many "if it begins with X, trim off X" cases that can be simplified:

#if ($sqlline =~ /^=/) { # Convert the output to record v +iew if prefixed by = # $sqlline =~ s/^=//; # trim off the = if ($sqlline =~ s/^=//) { # trim off '=' and convert recor +d view if prefixed by = $rsql = 1; }

And maybe:

#$server =~ s/\s+.*//; #$user =~ s/\s+.*//; #$passwd =~ s/\s+.*//; #$dbconn =~ s/\s+.*//; #$dbuser =~ s/\s+.*//; #$dbpasswd =~ s/\s+.*//; #$shpath =~ s/\s+.*// if $shpath; map{$_ && s/\s.*//} $server,$user,$passwd,$dbconn,$dbuser,$dbpassw +d,$shpath;