Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Bad line numbers .. bad!

by rjt (Deacon)
on Jul 25, 2013 at 21:08 UTC ( #1046425=note: print w/ replies, xml ) Need Help??


in reply to Bad line numbers .. bad!

Lines ending with either CRLF (\x0d\x0a) or LF (\x0a) are usually fine, even when mixed in the same source file. Lines ending with CR (most commonly Mac OS 9 and earlier, or just plain broken source code) will be seen as one line.

The following produces the same output for me on both Linux (5.18) and Windows (Strawberry 5.16):

use 5.010; use warnings; use autodie; for (qw<CRLF LF CR>) { say "Testing with $_ line endings:"; open my $perl, '|-', 'perl'; select $perl; local $\ = $_ eq 'CRLF' ? "\x0d\x0a" : $_ eq 'CR' ? "\x0d" : "\x0 +a"; print 'use strict;'; print 'use warnings;'; print 'print "This is line ", __LINE__, "\n\n";'; close $perl; select STDOUT; }

To see the line endings in a file, use a hex editor, or this:

use File::Slurp; $_ = read_file($ARGV[0] // $0); s/<(CR|LF)>/\\<$1\\>/g; # "Escape" existing s/\x0d/<CR>/g, s/\x0a/<LF>/g; s/((?:<CR>)?<LF>)/$1\n/g; # Add real line breaks say;

The only other thing I can think of is possibly a source filter, but if you are getting those results on a 5-line test with no source filter, scratch that.


Comment on Re: Bad line numbers .. bad!
Select or Download Code
Re^2: Bad line numbers .. bad!
by phramus (Novice) on Jul 25, 2013 at 21:42 UTC
    OK. Progress has been made. It wasn't the line endings, per se, but rather some garbage apparently being added to some lines. I had been using Padre since taking up Perl a couple of weeks ago. After your comments, I loaded the offending file into Textpad, only to observe that the problem persisted and that the line endings looked OK (with "view whitespace", anyway). In a rare moment of lucidity, I saved the file and reloaded it; and the problem was gone! My Textpad is configured to "strip trailing spaces" when saving. So some extraneous content, invisible, apparently existed on random lines. Perl is off the hook.

    This probably also explains some strange error messages that I've had, which were only resolved by deleting and retyping the indicated content with what was visually identical content. So Perl is off the hook for that, too.

    Thanks guys. I probably should have thought of cleaning up the line endings earlier, but I didn't until prompted. Now I'll be looking for a different editor (Win 7 64-bit).

      ... I'll be looking for a different editor ...

      The search for a comfortable editor is so tedious that when we find one, it usually has to be pried from our cold, dead hands. But be aware that the authors of most modern programmer's editors know that we live in a very diverse world, and they have made great efforts to accommodate every possible text file format variation and make them all 'look' right. You may encounter an editor with a default configuration that matches your assumptions about text files, but never assume these are the only configurations (or assumptions) possible.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1046425]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (6)
As of 2014-10-22 03:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (112 votes), past polls