Let me give a few sample cases where you want one and not
the other.
If you want to use the return value, then you want to use
do:
# Trick for generating a symbol to use as, for instance,
# a filehandle...
my $fh = do {local *FH};
If you want to use loop control, then you have to use a
bare block.
merlyn gives some ideas at
RE: My favorite looping mechanism in Perl is:
about why you might want to do that.
If you want to put several statements where syntactically
only one is supposed to go, you would want do. That might
look like this:
do {print "Hello"; print " World\n";} for 1..10;
Note that I don't feel the need for this use of do. So I
will follow up with a use for bare blocks that I feel is
equally useless. Suppose you don't like semi-colons. Well
help is at hand!
{print "Hello"}
{print " World\n"}
# etc
Does that clarify the similarities and differences?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.