Hello again,
I was playing with '
do{ }' and found interesting behaviour. Here is a code:
#!/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 ){} };
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
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?