in reply to Structure number

use Modern::Perl; my $sequence; while (<DATA>) { if (/ENERGY/) { $sequence++; next; } my ( $first, @fields ) = grep { $_ } split; say "$first $_ $sequence" for @fields; } __DATA__ 536 ENERGY = -176.2 gag 1 0 2 0 2 1 3 533 3 2 4 532 536 ENERGY = -175.9 gag 1 0 2 0 2 1 3 533 3 2 4 532

CountZero

A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James

Replies are listed 'Best First'.
Re^2: Structure number
by AG87 (Acolyte) on Dec 02, 2010 at 05:58 UTC

    Thanks

      Isn't some modification possible in my code/logic to have the desired output? Actually columns and rows are being added up in the file. and the i cant modify the "grep" condition accordingly. For example i want the same output for the file as follows

      536 ENERGY = -176.2 gag
      1 G 0 2 0 1
      2 G 1 3 533 2
      3 G 2 4 532 3
      536 ENERGY = -175.9 gag
      1 G 0 2 0 1
      2 G 1 3 533 2
      3 G 2 4 532 3

      here the second and the sixth column is added. I have been able to omit the 2nd column but how can i omit the 6th column? The code is

      open(MYFILE, $data_file) || die("Could not open file!"); { my $energy; while ( <MYFILE> ) { if ( /\bENERGY\b/ ) { ++$energy; next; } my ( $key, @fields ) = grep $_, split; for my $field ( @fields ) { if ( $field ne 'G' && $field ne 'A' && $field ne 'C' && $field ne +'G' ) { print "$key $field $energy\n"; } } } } close(MYFILE);

      your help will really be appreciated. Thanks