如何在perl中调用unix命令
how to invoke unix command in perl
我正在尝试执行以下 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])
请提供一些解决方案
谢谢
使用双引号代替反引号。
copy("/osp/slee/service/$srv_name/bin/exec/script.txt","/osp/local/home/linus/amit/scripts");
并删除 cd
在 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 数据库中的 table 列表作为竖线分隔的 table:
> psql -tAXq main postgres <<<\d;
这可以是来自 Perl 的 运行,如下所示:
> perl -e 'print(qx(psql -tAXq main postgres <<<\\d;));'
我正在尝试执行以下 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])
请提供一些解决方案 谢谢
使用双引号代替反引号。
copy("/osp/slee/service/$srv_name/bin/exec/script.txt","/osp/local/home/linus/amit/scripts");
并删除 cd
在 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 数据库中的 table 列表作为竖线分隔的 table:
> psql -tAXq main postgres <<<\d;
这可以是来自 Perl 的 运行,如下所示:
> perl -e 'print(qx(psql -tAXq main postgres <<<\\d;));'