这里的感叹号是什么意思

What does exclamation point mean here

这个例子中的感叹号是什么意思? 'open' 之前的那个?这本书不能回答我的问题..

if ( ! open PASSWD, "/etc/passwd") {
    die "How did you get logged in? ($!)";
}

while (<PASSWD>) {
    chomp;
    ...
}

! 是布尔取反运算符。

  • 给定真值,它 returns 假。
  • 给定假值,它 returns 真。

open(...) returns 错误时为 false,成功时为 true。

因此,!open(...) returns 错误时为真,成功时为假。

如果表达式 (!open(...)) 为真,则执行 if 的块。

因此,如果 open 返回错误,则执行 if 的块。

Perl 的符号运算符记录在 perlop