Regina Rexx 中的外部函数 return 数据如何处理?
How do external functions return data in Regina Rexx?
我已经在 Windows10 上的 Cygwin 中安装了 Regina Rexx 包(版本 3.9.1)。为了测试它,我编写了以下代码:
来电者:
#!/usr/bin/rexx
x = 'callee'() ; say 'callee returned' x ; exit
被叫方:
#!/usr/bin/rexx
say 'In callee' ; return 42
当我调用调用者时,我希望看到:
> ./caller
In callee
callee returned 42
事实上,当两个 exec 都在我的当前目录中时,这正是我做看到的。但是,当我将它们移动到 $PATH 中的不同目录并调用调用者时,我看到:
> ./caller
caller returned In callee
这……出乎意料。如果 Regina Rexx 手册中有对行为的解释,我没有看到。我错过了什么吗?谢谢。
事实证明,仅当 Rexx exec 驻留在 REGINA_MACROS 变量中提到的目录中时,它们才可以用作外部函数,如下所示:
export REGINA_MACROS="${HOME}/subdir:/maybe/somewhere/else"
如果没有这个,被调用的例程将被视为另一个可执行文件。 return 值是所有标准输出行,它们之间有一个 space 分隔符。任何 stderr 输出都像往常一样发送到屏幕(或重定向)。
我已经在 Windows10 上的 Cygwin 中安装了 Regina Rexx 包(版本 3.9.1)。为了测试它,我编写了以下代码:
来电者:
#!/usr/bin/rexx
x = 'callee'() ; say 'callee returned' x ; exit
被叫方:
#!/usr/bin/rexx
say 'In callee' ; return 42
当我调用调用者时,我希望看到:
> ./caller
In callee
callee returned 42
事实上,当两个 exec 都在我的当前目录中时,这正是我做看到的。但是,当我将它们移动到 $PATH 中的不同目录并调用调用者时,我看到:
> ./caller
caller returned In callee
这……出乎意料。如果 Regina Rexx 手册中有对行为的解释,我没有看到。我错过了什么吗?谢谢。
事实证明,仅当 Rexx exec 驻留在 REGINA_MACROS 变量中提到的目录中时,它们才可以用作外部函数,如下所示:
export REGINA_MACROS="${HOME}/subdir:/maybe/somewhere/else"
如果没有这个,被调用的例程将被视为另一个可执行文件。 return 值是所有标准输出行,它们之间有一个 space 分隔符。任何 stderr 输出都像往常一样发送到屏幕(或重定向)。