我一直在研究一些用於數據挖掘的Perl庫。這些庫充滿了用於收集和處理信息的嵌套循環。我正在使用嚴格模式,並且我總是在第一個循環之外用my
聲明我的變量。例如:在Perl中聲明變量內部或外部的循環,最佳實踐
# Pretty useless code for clarity purposes:
my $flag = 1;
my ($v1, $v2);
while ($flag) {
for $v1 (1 .. 1000) {
# Lots and lots of code...
$v2 = $v1 * 2;
}
}
對於我讀過here,性能明智的,它是更好地宣佈他們的循環之外,但是,我的代碼的維護變得越來越困難,因爲一些變量的聲明最終離他們實際使用的地方很遠。
像這樣的事情會更容易十個分量:
my $flag = 1;
while ($flag) {
for my $v1 (1 .. 1000) {
# Lots and lots of code...
my $v2 = $v1 * 2;
}
}
我沒有太多的使用Perl的經驗,因爲我來自與C++主要工作。在某些時候,我想開源我的大部分庫,所以我希望它們儘可能地讓所有Perl專家滿意。
從專業的Perl開發人員的角度來看,這些選項之間最適合的選擇是什麼?
如果這兩者之間的性能差異實際上很重要,那麼您應該使用C.爲了可維護性,您已經發現'for $ foo'更好;儘可能在有限的範圍內聲明事物。 – ThisSuitIsBlackNot