Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re^4: raw data formatting

by teamassociated (Sexton)
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"; }

Replies are listed 'Best First'.
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->() ) ) {


    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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1004102]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2018-06-24 17:08 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.