You are most welcome, but I do advise that if you are going to maintain Perl code, it would be wise to examine the much more efficient mechanisms shown by other authors. Mine was designed to be readable; it is not exactly the most efficient way to do it in Perl. :-)
That said, glad we could help.
| [reply] |
Apparently the code my company uses is so old, I tried the other suggestions as well, but couldn't get them to work. Also, I actually ended up modifying your code just a bit, specifically to this:
open(NPBXNUM1, ">npbxnum1");
open(MYINPUTFILE, "npbxnum");
while (<MYINPUTFILE>) {
my($line) = $_;
chomp($line);
foreach my $inputData ($line) {
my $outputData = $inputData;
while (length($outputData) < 4) {
$outputData .= '_';
}
print NPBXNUM1 "$outputData\n";
}
}
close(MYINPUTFILE);
close(NPBXNUM1);
Thanks again for the help. | [reply] [d/l] |
You're welcome, again -- are you up for a little code analysis? There are a few things in the script as you've modified it which really ought to be adjusted if you have the time.
-
open(NPBXNUM1, ">npbxnum1");
open(MYINPUTFILE, "npbxnum");
You went through the effort of specifying > on the output file; consistency has much value in engineering. Why not boldly include the < on the input file?
open(NPBXNUM1, ">npbxnum1");
open(MYINPUTFILE, "<npbxnum");
And I'm sure other Monks would strongly recommend breaking the < and > out into their own parameters, for reasons I don't pretend to understand:
open(NPBXNUM1, '>', "npbxnum1");
open(MYINPUTFILE, '<', "npbxnum");
-
while (<MYINPUTFILE>) {
my($line) = $_;
chomp($line);
probably better as:
while (my $line = <MYINPUTFILE>) {
chomp($line);
-
foreach my $inputData ($line) {
my $outputData = $inputData;
while (length($outputData) < 4) {
$outputData .= '_';
}
print NPBXNUM1 "$outputData\n";
}
The foreach loop is pointless, as its purpose is to iterate through an array; $line is a scalar.
Perhaps better as:
my $outputData = $line;
while (length($outputData) < 4) {
$outputData .= '_';
}
print NPBXNUM1 "$outputData\n";
}
| [reply] [d/l] [select] |
Here's a toy you might find useful:
C:\Steve\Dev\PerlMonks\P-2013-09-17@2038-Use-Strict>make4sortable.pl
a -> a___
NTX -> NTX_
NT8 -> NT08
NT9 -> NT09
NT10 -> NT10
NT11 -> NT11
| [reply] [d/l] [select] |