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?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|