我通过我的perl脚本调用SQL文件,该脚本将输出写入日志文件,如下所示:
system("sqlplus -s schema/pwd\@dbname \@$sql_file > $log_file");
但是,我想将输出写入屏幕。有没有办法做到这一点(除了重新执行命令sans写入日志文件)?
答案 0 :(得分:2)
您可以自己捕捉结果并将其发送给两个目标。
my $output = `sqlplus -s schema/pwd\@dbname \@$sql_file`;
print $output;
open( my $file, '>', $log_file ) or die $!;
print {$file} $output;
close $file;
答案 1 :(得分:0)
您可以通过使用管道读取tee
来有效STDOUT
命令的输出并节省一些内存:
open(my $cmdfh, "sqlplus -s schema/pwd\@dbname \@$sql_file |") or die $!;
open(my $logfh, '>', $log_file ) or die $!;
while (<$cmdfh>) {
print;
print {$logfh} $_;
}
close $logfh;
close $cmdfh;