in reply to Re^3: Structure number
in thread Structure number

if (@fields[2] ne G || A || C || G)

The syntax and logic are wrong there.    The letter would be in  $fields[0] and that has to be explicitly compared for each letter and you want to use  && instead of  || for a negative comparison.    For example:

if ( $fields[0] ne 'G' && $fields[0] ne 'A' && $fields[0] ne 'C' & +& $fields[0] ne 'G' )

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

    its still not working. The code is not omitting pairs/lines with these alphabets :(

      its done thank you so much for your help. I was making a mistake in array index :)

        Sir I have omitted the column containing alphabets but if a new 6th column is added into file, is it possible to modify the grep function? For example if the input file is

        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

        The working 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 WRITE "$key $field $energy\n"; } } } } close(MYFILE);

        How can I get the same output with 6th column (same as 1st column) added. As I cannot use if condition on it like i used for alphabets. Can you please guide/help me?