【问题标题】:Change $! in Perl [duplicate]换美元!在 Perl [重复]
【发布时间】:2013-05-11 12:04:24
【问题描述】:

我需要从 $! 中的 sub 返回错误文本。不过很简单

 $! = "Error: Something is wrong!";

不起作用,它不会改变 $!。我该怎么做?

【问题讨论】:

  • $! 包含出了什么问题...
  • Ok $!="这是错误的";
  • 你应该考虑“$!”为只读。这是 perror 的道德等价物:linux.die.net/man/3/perror
  • @Brian Roach,该问题的答案可能有有用、适用的建议,但问题非常不同,该问题的答案并不能回答这个问题。它甚至不接近重复。

标签: perl


【解决方案1】:

$! 反映了 C 库 var errno(一个数字)及其代表的错误消息(使用 strerror 或类似方法获得)。

您无法更改字符串,因为这是生成的值,但您可以更改数字。

$ perl -E'say $!=$_ for 1..10'
Operation not permitted
No such file or directory
No such process
Interrupted system call
Input/output error
No such device or address
Argument list too long
Exec format error
Bad file descriptor
No child processes

您的代码没有尝试设置errno,因此它应该使用自己的变量而不是使用$!(或使用die 引发异常)。

【讨论】:

    【解决方案2】:

    两个选项。

    首先,Errno::AnyString

    第二,不要这样做。 $! 是特殊的,应该表示 errno。如果您需要传达特殊错误,请使用$YourModule::Error(或其他)。

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 2023-03-03
      • 2021-03-31
      • 2018-03-22
      • 2014-11-01
      • 2010-11-05
      • 2014-04-12
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多