回答
這是一個通常與do
一起使用的技巧,請參閱chapter Statement Modifiers in perlsyn
。
也許作者想跳出next
之類的東西。
這似乎是代碼在做什麼。最後一個關鍵字用在if代碼中的代碼中。謝謝! – Chris
沒有更多的代碼,很難說它們被用於什麼。這可能是一個錯字,或者它可能是一個裸體,請參閱chapter 10.4 The Naked Block Control Structure in Learning Perl。
裸體模塊爲塊內的變量添加了詞彙範圍。
'if'後的第一組大括號是否已經提供了範圍界定?爲什麼要窩?我基本上對perl一無所知,所以也許這對人們是顯而易見的,但對我來說不是這樣! –
@ChrisFarmer:因爲'if(1){{my $ x = 1; } {my $ x = 2; }}' – choroba
通過添加第二個作用域,您可以重新分配'$ var'並以在if塊之外不可見的方式在裸塊中使用它。 –
那裏有兩個陳述。 「if」聲明和bare block。裸塊是僅執行一次的循環。
say "a";
{
say "b";
}
say "c";
# Outputs a b c
但作爲環,它們影響next
,last
和redo
。
my $i = 0;
say "a";
LOOP: { # Purely descriptive (and thus optional) label.
++$i;
say "b";
redo if $i == 1;
say "c";
last if $i == 2;
say "d";
}
say "e";
# Outputs a b b c e
(next
確實相同last
由於沒有下一個元素。)
它們通常用於創建一個詞彙範圍。
my $file;
{
local $/;
open(my $fh, '<', $qfn) or die;
$file = <$fh>;
}
# At this point,
# - $fh is cleared,
# - $fh is no longer visible,
# - the file handle is closed, and
# - $/ is restored.
現在還不清楚爲什麼在這裏使用。
或者,它也可能是一個哈希構造。
sub f {
...
if (@errors) {
{ status => 'error', errors => \@errors }
} else {
{ status => 'ok' }
}
}
是短期的
sub f {
...
if (@errors) {
return { status => 'error', errors => \@errors };
} else {
return { status => 'ok' };
}
}
的Perl偷窺到括號猜測,如果它是一個裸露的循環或哈希構造。既然你沒有提供大括號的內容,我們不能說。
+1提及哈希構造函數的可能性。 – chepner
{{可用於突破「if塊」。我有一個包含一些代碼:
if ($entry =~ m{\nuid: ([^\s]+)}) {{ # double brace so "last" will break out of "if"
my $uid = $1;
last if exists $special_case{$uid};
# ....
}}
# last breaks to here
- 1. 雙花括號避免W3C驗證
- 2. 雙花括號不起作用
- 3. 塊 - 花括號/無花括號?
- 4. 如果沒有花括號,將花括號放入JavaScript中?
- 5. 逃離大括號的花括號
- 6. 了StyleCop:括號內的花括號
- 7. Javascript獲取元素,包括雙曲花括號
- 8. C++構造函數中的雙曲花括號
- 9. C#字符串插值轉義雙引號和花括號
- 10. preg_replace和花括號
- 11. C++ {*此}花括號
- 12. Eclipse和花括號
- 13. 雙括號
- 14. 雙曲花括號在angularjs中不起作用
- 15. 在Emacs正則表達式中匹配雙花括號?
- 16. 右括號後面的雙括號
- 17. 初始化C-struct的雙花括號的含義是什麼?
- 18. 帶花括號的流api
- 19. 花括號的功能
- 20. 與雙曲花括號的聚合物衝突
- 21. 獲取雙花括號內的字符串
- 22. Java中的空花括號/大括號是什麼意思?
- 23. 在陣列中忽略大括號的花括號
- 24. perl用大括號替換大括號
- 25. GitHub Markdown - 雙括號
- 26. 單花括號中的屬性文件
- 27. Python - 類型提示中的花括號
- 28. C中的浮動花括號#
- 29. liquibase遷移中的逃避花括號
- 30. 意外失蹤{Eclipse中的花括號
我不認爲他們做任何事情。我認爲它們相當於在if塊中添加另一個代碼塊。 – gpojd