in reply to How to have perl check line length

$line .= '_' x (4 - length $line);

Be sure to chomp off the end of line characters first.

Replies are listed 'Best First'.
Re^2: How to have perl check line length
by ddrew78 (Beadle) on Sep 17, 2013 at 17:56 UTC
    So I added it like below to my script, but it doesn't work. Am I missing something else?
    open(NPBXNUM1, ">npbxnum1"); open(MYINPUTFILE, "npbxnum"); while (<MYINPUTFILE>) { chomp; $line .= '_' x (4 - length $line); } close(MYINPUTFILE); close(NPBXNUM1); system "mv npbxnum1 npbxnum";

      Replace $line with whatever variable you are storing the line in. (In this case, $_)

      Also, you should probably print the modified lines to the output file at some point inside the loop.

      PS: use warnings; use strict;, and opens in the form of open my $filehandle, '<', $filename or die "I couldn't open the file.  OS says: $!"; will help highlight likely mistakes in your code and illuminate the reasons for any file errors.

      You really, really, really should use strict, especially if you are new to Perl. It will save you from asking embarrassing questions.

      That is to say, being new to Perl, you might still have to ask:

      "What does Global symbol "$line" requires explicit package name mean?"

      But that's a much better question than "why didn't that line of code I stuck in my program work?"

      #!/usr/bin/perl -w use strict; { open(NPBXNUM1, ">npbxnum1"); open(MYINPUTFILE, "npbxnum"); while (<MYINPUTFILE>) { chomp; $line .= '_' x (4 - length $line); } close(MYINPUTFILE); close(NPBXNUM1); system "mv npbxnum1 npbxnum"; } exit; __END__ C:\Steve\Dev\PerlMonks\P-2013-09-17@2038-Use-Strict>usestrict.pl Global symbol "$line" requires explicit package name at C:\Steve\Dev\P +erlMonks\P-2013-09-17@2038-Use-Strict\usestrict.pl line 11. Global symbol "$line" requires explicit package name at C:\Steve\Dev\P +erlMonks\P-2013-09-17@2038-Use-Strict\usestrict.pl line 11. Execution of C:\Steve\Dev\PerlMonks\P-2013-09-17@2038-Use-Strict\usest +rict.pl aborted due to compilation errors.