在perl中被一个非常简单的if / else语句所困惑

时间:2011-06-01 21:46:55

标签: perl boolean if-statement

print "content-type: text/html \n\n";   #The header
$file = "newtext.txt";
if (unlink($file) == 0) {
    print "File deleted successfully.";
} else {
    print "File was not deleted.";
}

这是我从tizag中获取的一些代码。我不明白的部分是true的bool值是1,false是0.那么为什么当我成功删除文件时我正在检查它是否返回0?

4 个答案:

答案 0 :(得分:6)

这似乎是一个错误......来自perldoc perlfunc

  

删除文件列表。成功的话   它返回它的文件数   已成功删除。失败时,它   返回false并设置$! (错误):

如果返回值为0,则删除0个文件。

编写它的正确方法是:

if (unlink($file)) { print "Success!" }
else { print "Unlink failed: $!" }

答案 1 :(得分:2)

实际上,我认为这是一个错误。来自perldoc for unlink

  

成功时,它返回成功删除的文件数。失败时,它返回false并设置$! (错误)

可能是自动驾驶仪上的shell编程。

答案 2 :(得分:1)

该代码段可能完全错误,因为unlink会返回成功删除的文件数。

答案 3 :(得分:0)

好的,没关系我的第一反应。这是来自perldoc for unlink:

  

删除文件列表。成功时,它返回成功删除的文件数。失败时,它返回false并设置$! (错误)

证明没有标准这样的东西。还证明了那个编写该代码的人,不幸的是有一个bug。就个人而言,我原本预期0意味着成功。如果你看一下C系统调用unlink,零意味着成功。我告诉你,疯狂。