Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^4: raw data formatting

by teamassociated (Acolyte)
on Nov 16, 2012 at 02:24 UTC ( #1004102=note: print w/ replies, xml ) Need Help??


in reply to Re^3: raw data formatting
in thread raw data formatting

Thank you that worked! This code technique is new 2 me, but thanks! I need to skip certain lines ...working in original code, but tried using it here. how do i skip indexes as opposed to lines?

while ( my @lines = $it->() ) { next if ($. == 1..88); my $letter = 'A'; my $acctNum = do { $lines[0] =~ /\s+(\d+)\s+(\d+)/; $1 . $2 }; push @lines, " acctnum=$acctNum"; print for map { s/\s+/$letter++ . ' '/e; $_ } @lines; print "\n"; }


Comment on Re^4: raw data formatting
Download Code
Re^5: raw data formatting
by Kenosis (Priest) on Nov 16, 2012 at 03:24 UTC

    What do the indexes look like, i.e., how do they appear in your file?

    Noticed that line "F" doesn't wrap if it's the very last DATA line, since it doesn't have a newline at it's end. Thus, make the following two changes and I'll do the same in the original posting:

    while ( chomp( my @lines = $it->() ) ) {

    and

    print for map { s/\s+/$letter++ . ' '/e; "$_\n" } @lines;

    Remove the print "\n"; line.

      Here is the entire file: I need to skip the 1st 88 indexes and do not need any line that do not start w/ a space then a digit...this seemed to of work:
      next if ($lines[0] !~ /\A\s+\d+/);
      thank you again!

        Use <code> tags for data please. This data (unike your initial post) seemingly contains real names (as well as things titled PHONE, BAD_DEBT, State/Area/zip codes and what could be social security information), are you sure you should be posting this anywhere?

        A grep on the data to check for four spaces followed by a digit at the beginning of each line works:

        use strict; use warnings; use List::MoreUtils qw/natatime/; my $it = natatime 5, grep /\A\s{4}\d/, <DATA>; while ( chomp( my @lines = $it->() ) ) { my $letter = 'A'; my $acctNum = do { $lines[0] =~ /\s+(\d+)\s+(\d+)/; $1 . $2 }; push @lines, " acctnum=$acctNum"; print for map { s/\s+/$letter++ . ' '/e; "$_\n" } @lines; } __DATA__ Place your data here...

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (10)
As of 2014-12-29 16:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (193 votes), past polls