为什么我的Perl脚本无限循环?
我开发了一个脚本(主要通过访问多个解决方案并将我最喜欢的内容混合在一起)来查找和替换文件中的单词。这些文件都包含在一个目录中。出于某种原因,我的脚本进入了一个无限循环,但它似乎可以工作 如果您能解释一下为什么它不会退出循环,我将不胜感激为什么我的Perl脚本无限循环?,perl,while-loop,infinite-loop,Perl,While Loop,Infinite Loop,我开发了一个脚本(主要通过访问多个解决方案并将我最喜欢的内容混合在一起)来查找和替换文件中的单词。这些文件都包含在一个目录中。出于某种原因,我的脚本进入了一个无限循环,但它似乎可以工作 如果您能解释一下为什么它不会退出循环,我将不胜感激 #!/usr/bin/perl -i.bak my $DIRECTORY = '/home/mrk28/testing/findreplace'; opendir (DIR, $DIRECTORY); @count = readdir(DIR); my $cou
#!/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;
}
#/usr/bin/perl-i.bak
my$DIRECTORY='/home/mrk28/testing/findreplace';
opendir(DIR,$DIRECTORY);
@count=readdir(DIR);
我的$count=@count;
打印$count-2;
我的$i=0;
而($i<$count){
s/prods55a/sapprda/;
$i=+1;
印刷品;
}
应该是
$i+=1; # or, ++$i;
前者将在每个循环中将$i
设置为+1
(即1),在您的情况下,该值始终小于$count
,因此循环不会退出
应该是
$i+=1; # or, ++$i;
前者将在每个循环中将
$i
设置为+1
(即1),这在您的情况下总是小于$count
,因此循环不会退出。这就是为什么在编写Perl(以及使用)时应该始终启用的原因:
$perl-e'使用警告;我的$i$i=+1'
Reversed+=运算符位于-e第1行。这就是为什么在编写Perl(以及使用Perl)时应始终启用的原因: $perl-e'使用警告;我的$i$i=+1'
反向+=运算符位于-e第1行。当您想知道为什么某些变量没有您期望的值时,请开始检查这些值:
while ( $i < $count ) {
s/prods55a/sapprda/;
$i=+1;
warn "\$i is now $i\n";
print;
}
while($i<$count){
s/prods55a/sapprda/;
$i=+1;
警告“\$i现在是$i\n”;
印刷品;
}
你会马上发现你并没有像你想象的那样增加$i
这是一种基本的调试实践。深入研究这个程序,直到你发现它没有做你认为它是什么。每一步都要进行验证
和,打开警告。:) 当您想知道为什么某些变量没有您期望的值时,请开始检查这些值:
while ( $i < $count ) {
s/prods55a/sapprda/;
$i=+1;
warn "\$i is now $i\n";
print;
}
while($i<$count){
s/prods55a/sapprda/;
$i=+1;
警告“\$i现在是$i\n”;
印刷品;
}
你会马上发现你并没有像你想象的那样增加$i
这是一种基本的调试实践。深入研究这个程序,直到你发现它没有做你认为它是什么。每一步都要进行验证
和,打开警告。:) 谢谢。显然,我是perl新手。谢谢。显然,我是perl新手。