2013-02-19 71 views
-1

我得到了一些代碼,它的工作原理,但不understan這個部分!$ dump_done ...

my $dump_done = 0; 
foreach my $line(keys %results){ 
    if ($results{$line} == 1 and !$dump_done) { 
     print Dump($post); 
     $dump_done = 1; 
    } 
} 
+1

如果打印'$ POST'第一次的'$ dump_done = 1'值變爲1,之後,價值'!$ dump_one'變成0。下一次你的病情會永遠是'虛假'。 – gaussblurinc 2013-02-19 15:32:27

+0

我現在明白了...謝謝!!! – Hellena 2013-02-19 15:39:17

回答

7

!Logical NOT operator。它將返回$dump_done的否定。如果$dump_done包含0,否定會給你1

my $dump_done = 0; 
print !$dump_done; # Prints 1 

這是有效的,因爲在任何Perl非零值被認爲是true0被認爲是false

你可以試試這個片段:

if (5) { 
    print "Hello"; # Will be executed. 
} 
+0

但是爲什麼在這個例子中打印轉儲($ post);只有一次? – Hellena 2013-02-19 15:23:18

+0

@ user2087116。因爲在'if'裏面,你做了'$ dump_done = 1;',之後你的'if'不會再運行,因爲現在'!$ dump_done'將會是'0'。然後,因爲你永遠不會在'for'循環內改變它的值,所以它永遠是'0',並且它只打印一次。 – 2013-02-19 15:35:39

+0

我現在明白了...謝謝! – Hellena 2013-02-19 15:38:36

2

!字符大多數編程語言代表,它是否定

如果變量$dump_done的值仍然爲零,則當您測試$dump_done時,它將返回FALSE(0)。如果你否定這個表達式,你會得到一個TRUE表達式(!= 0)。

Truth and Falsehood

+0

但是爲什麼在這個例子中打印轉儲($ post);只有一次? – Hellena 2013-02-19 15:23:48