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;