in reply to while () vs. while (1)
As already mentioned by JavaFun, "B::Deparse" shows that perl compiles "while(){}" and "for(;;){}" to the same code, so "1" and "2" behave different, "3" and "4" are equal, "5" and "6" are also equal ...
#!/usr/bin/perl use B::Deparse; my $deparse = B::Deparse->new(); my $sub0 = sub { for(;;) {print}; }; my $sub1 = sub { while () {print}; }; my $sub2 = sub { while ( () ) {print}; }; my $sub3 = sub { print while (); }; my $sub4 = sub { print while ( () ); }; my $sub5 = sub { print until (); }; my $sub6 = sub { print until ( () ); }; foreach ( $sub0, $sub1, $sub2, $sub3, $sub4, $sub5, $sub6 ) { print $count++,":\nsub ", $deparse->coderef2text($_), "\n\n"; }
Program output:
0: sub { while (1) { print $_; } } 1: sub { while (1) { print $_; } } 2: sub { while (()) { print $_; } } 3: sub { print $_ while (); } 4: sub { print $_ while (); } 5: sub { print $_ until (); } 6: sub { print $_ until (); }
|
---|