首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取在Perl中使用反引号执行的命令的返回值

获取在Perl中使用反引号执行的命令的返回值
EN

Stack Overflow用户
提问于 2011-10-19 17:29:50
回答 1查看 29.1K关注 0票数 28

我可以在bash中执行以下操作:

代码语言:javascript
复制
output=`command`
retcode=$?

有没有办法在Perl中做同样的事情?如下所示:

代码语言:javascript
复制
$output=`command`
$retcode=???
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-19 17:35:38

您可以读取$?变量(就像在shell中一样)。来自man perlvar

代码语言:javascript
复制
 $?      The status returned by the last pipe close, backtick ("``") command, successful call to wait() or waitpid(), or from the
               system() operator.  This is just the 16-bit status word returned by the traditional Unix wait() system call (or else is made up
               to look like it).  Thus, the exit value of the subprocess is really ("$? >> 8"), and "$? & 127" gives which signal, if any, the
               process died from, and "$? & 128" reports whether there was a core dump.  (Mnemonic: similar to sh and ksh.)

               Additionally, if the "h_errno" variable is supported in C, its value is returned via $? if any "gethost*()" function fails.

               If you have installed a signal handler for "SIGCHLD", the value of $? will usually be wrong outside that handler.

               Inside an "END" subroutine $? contains the value that is going to be given to "exit()".  You can modify $? in an "END"
               subroutine to change the exit status of your program.  For example:

                   END {
                       $? = 1 if $? == 255;  # die would make it 255
                   }

               Under VMS, the pragma "use vmsish 'status'" makes $? reflect the actual VMS exit status, instead of the default emulation of
               POSIX status; see "$?" in perlvms for details.

               Also see "Error Indicators".
票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7819197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档