Well, I think you're way overdoing it here.. if you're worried about efficiency and resources, you probably shouldn't be reading in the array at all.. there's no need. And, since you've already determined that $uclc is going to be either one of 'uc' or 'lc', you don't need the extra check in there..
Here's how I woulda done it..
#!/usr/bin/perl -w
use strict;
my $uclc = shift or Usage();
my $infile = shift or Usage();
my $outfile = shift or Usage();
Usage() unless ($uclc eq 'lc' || $uclc eq 'uc');
open (IN, "< $infile") or die "Error opening $infile for read: $!";
open (OUT, "> $outfile") or die "Error opening $outfile for write: $!"
+;
foreach (<IN>) {
# just print directly on reading, easier on the mem..
# quicker too, and we know that $uclc is going to
# be either lc or uc at this point.
print OUT $uclc eq 'lc' ? lc() : uc();
}
close IN or die "Error closing $infile after read: $!";
close OUT or die "Error closing $outfile after write: $
+!";
######################################################################
+####
sub Usage {
die "\n Usage: uclc.pl (lc|uc) infile outfile\n";
}
######################################################################
+####
-Syn0
Update: didn't look too closely at opening code before, but fixed same bug after Hofmator mentioned it. Also, his elimination of the string equality check in the loop was a good call. ++
-
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.
|