[英]Why does my Perl script loop infinitely?
我開發了一個腳本(主要是通過訪問多個解決方案並將我最喜歡的內容混在一起)來查找和替換文件中的單詞。 這些文件都包含在目錄中。 由於某種原因,我的腳本進入了無限循環,但是看起來可以正常工作。
我希望您能解釋為什么它不會退出循環。
#!/usr/bin/perl -i.bak
my $DIRECTORY = '/home/mrk28/testing/findreplace';
opendir (DIR, $DIRECTORY);
@count = readdir(DIR);
my $count = @count;
print $count-2;
my $i = 0;
while ( $i < $count ) {
s/prods55a/sapprda/;
$i=+1;
print;
}
$i=+1;
應該
$i+=1; # or, ++$i;
前者將在每個循環中將$i
設置$i
+1
(即1),但總是小於$count
(在您的情況下),因此循環不會退出。
當您想知道為什么某些變量沒有您期望的值時,請開始檢查這些值:
while ( $i < $count ) {
s/prods55a/sapprda/;
$i=+1;
warn "\$i is now $i\n";
print;
}
您會立即看到,您並沒有像想象中那樣增加$i
。
這是基本的調試實踐。 深入研究該程序,直到達到發現它沒有達到自己所想的水平為止。 驗證每一步的所有內容。
並且,打開警告。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.