... "Çünkü mümkünse DBI'yi gerçekten kullanmak istiyorsun. Kullanmamak için iyi sebepleriniz olabilir, ama belki, nedeninizin neden çok iyi olmadığını ve bununla ilgili ne yapacağınızı söyleyebiliriz. Bu, çatal ve dosya eleklerini kullanarak ve bir seferde bir satır çıktı almanızı istediklerinizi yapmanın bir yoludur (uyarı: bu gibi bir işleme çok fazla yazdırırsanız, arabellek sorunları nedeniyle engellenebilir):
use strict;
use warnings;
pipe(my($p_rdr, $c_wtr)) or die "Err: $!";
pipe(my($c_rdr, $p_wtr)) or die "Err: $!";
my $pid = fork;
die "Could not fork: $!" unless defined $pid;
unless ($pid) {
close $p_rdr;
close $p_wtr;
open(STDOUT, ">&=", $c_wtr) or die "dup: $!";
open(STDIN, "<&=", $c_rdr) or die "dup: $!";
print "Exec sqlplus\n";
exec qw(sqlplus user/[email protected]);
die "Could not exec: $!";
}
close $c_wtr;
close $c_rdr;
print "Print sql\n";
print $p_wtr "select * from table_name where col1 = 'something';\n";
print "Close fh\n";
close $p_wtr;
print "Read results\n";
while (<$p_rdr>) {
print "O: $_";
}
close $p_rdr;
Ayrıca bir kabuk komut dosyası yazmayı ve quesry çıktı sonucunu döndürmeyi düşünüyorum ve ayrıca bu kabuk betiğine perl script.html içinde de aramak istiyorum. – Vijay
emin - backticks veya qx() içindeki herhangi bir şey alt kabuk olarak çalıştırılacak ve çıktı benzer şekilde yakalanacaktır. Bir kez daha, bunun perl programını yapılandırmak için çok iyi bir yol olduğunu düşünmüyorum. – cms
Bu, qx alıntı mekanizmasının harika bir kullanımıdır ve tek seferlik senaryo senaryolarında, bu gitmek için iyi bir yol olabilir. –