我正在尝试执行以下unix命令,但它没有被执行
$array_of_tables= `dbsmp $srv_name`;
print "$array_of_tables\n";
请帮我通过perl脚本找出数据库中的表格列表。
此外,我尝试使用以下命令将文件从路径复制到不同的路径: -
copy(`cd /osp/slee/service/$srv_name/bin/exec/script.txt`,`cd /osp/local/home/linus/amit/scripts`);
但收到错误: -
Usage: copy(FROM, TO [, BUFFERSIZE])
请提供一些解决方案 感谢
答案 0 :(得分:3)
使用双引号代替反引号。
copy("/osp/slee/service/$srv_name/bin/exec/script.txt","/osp/local/home/linus/amit/scripts");
并删除cd
答案 1 :(得分:0)
在Perl中,捕获系统(shell)命令输出的首选方法是qx()
运算符。请参阅http://perldoc.perl.org/perlop.html#Quote-Like-Operators。
$array_of_tables = qx(dbsmp $srv_name);
print("$array_of_tables\n");
实际上,反引号也应该有效,所以问题必须在于你的dbsmp命令。我不确定那个命令是什么;您必须提供有关该实用程序的更多信息以及您看到的错误。
为了进行比较,我可以使用此shell命令将本地postgres数据库中的表列表检索为管道分隔表:
> psql -tAXq main postgres <<<\\d;
这可以从Perl运行,如下所示:
> perl -e 'print(qx(psql -tAXq main postgres <<<\\\\d;));'