gpt4 book ai didi

perl - 在 Perl 中调用命令行函数并将输出作为字符串

转载 作者:行者123 更新时间:2023-11-29 11:46:02 25 4
gpt4 key购买 nike

在 Perl 中执行命令行函数的最佳/最简单方法是什么,以便我可以获得字符串形式的输出?

我实际上想做的是从 PostgreSQL 的 PL/Perl 函数中调用 Java 程序,我想要输出字符串,但目前它似乎只返回 0。

这是一段简单的代码来解释我所追求的:

CREATE OR REPLACE FUNCTION perl_func()
RETURNS character varying AS
$BODY$
return system("java -version");
$BODY$
LANGUAGE plperlu VOLATILE
COST 100;

最佳答案

您可以使用反引号。引自 perldoc perlop :

*qx/STRING/

*`STRING`

A string which is (possibly) interpolated and then executed as a system command with /bin/sh or its equivalent. Shell wildcards, pipes, and redirections will be honored. The collected standard output of the command is returned; standard error is unaffected. In scalar context, it comes back as a single (potentially multi-line) string, or undef if the command failed. In list context, returns a list of lines (however you've defined lines with $/ or $INPUT_RECORD_SEPARATOR), or an empty list if the command failed.

您不能使用 system为此,因为它只返回参数的返回值(当作为 shell 命令运行时)。这应该有效:

CREATE OR REPLACE FUNCTION perl_func()
RETURNS character varying AS
$BODY$
my $output=`java -version`;
chomp($output);
return $output;
$BODY$
LANGUAGE plperlu VOLATILE
COST 100;

请注意,反引号命令的输出通常包含尾随换行符,因此通过 chomp 去除它通常很有用。

关于perl - 在 Perl 中调用命令行函数并将输出作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10211410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com