Style tips.
- Using 2 argument open is potentially buggy if the file name can contain unusual characters like ">" or "|". It is therefore a good habit to use 3 argument open instead. Note that this error is implicit in <>, which is a reason not to use it. See magic-diamond <> behavior -- WHAT?! for an explanation.
- As perlstyle says, you should always include $! in your error messages. Always, always, always.
- I've personally encountered enough cases where a file can't be opened because the filename includes accidental whitespace that I like to always quote it in the error message.
- There is no need to explicitly close the filehandle since Perl does it for you. (And does it quite promptly if you're using lexically scoped filehandles. Which you are not.) Unless, of course, you are concerned that the close may fail and are error checking it. If you're serious about error checking, I would recommend using autodie.
With those changes your snippet becomes:
foreach my $file (@ARGV)
{
open (FILE, "<", $file) || die "could not open '$file': $!";
while (<FILE>)
{
print $_;
}
print "whatever you wanted to use as a separator $file\n";
}
Getting more contentious, if you spell "foreach" as "for", add the normal indentation and brace style, lexical filehandles, and convert the while into an inline form, you get the more idiomatic:
for my $file (@ARGV) {
open (my $fh, "<", $file) || die "could not open '$file': $!";
print while <$fh>;
print "whatever you wanted to use as a separator $file\n";
}
Edit: Argel is right. The for/foreach distinction belongs in the stylistic nitpicks, not in the more substantive section.
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.