rsFalse has asked for the wisdom of the Perl Monks concerning the following question:
Hello again,
I was playing with 'do{ }' and found interesting behaviour. Here is a code:
I was playing with 'do{ }' and found interesting behaviour. Here is a code:
output:#!/usr/bin/perl -l use strict; use warnings; my $uninitialized; print do { $uninitialized }; print do {}; print do { if( 1 ){} }; print do { if( 0 ){} }; print '-' x 10; print scalar do { $uninitialized }; print scalar do {}; print scalar do { if( 1 ){} }; print scalar do { if( 0 ){} };
For me it is strange that 'scalar do {};' and 'scalar do { if( 0 ){} };' have different outputs, as the codes look equivalent. Can someone explain a difference in the output?Use of uninitialized value $uninitialized in print at ./perlmonks_do_u +nitialized.pl line 8. 0 ---------- Use of uninitialized value $uninitialized in print at ./perlmonks_do_u +nitialized.pl line 15. Use of uninitialized value in print at ./perlmonks_do_unitialized.pl l +ine 16. Use of uninitialized value in print at ./perlmonks_do_unitialized.pl l +ine 17. 0
Back to
Seekers of Perl Wisdom