On 11/03/2012 15:02, lina wrote:
On Sun, Mar 11, 2012 at 10:45 PM, lina<lina.lastn...@gmail.com>  wrote:
A
7.803481E-01   8.228973E-01   7.515242E-01    2      1833
-5.5000000000     308.3889771284     5   0   7     1.7084151661
1.6790503987       2.75458
53558
  7.866901E-01   8.410519E-01   9.981456E-01    2     14485
-5.5000000000     269.6201271260    39   4   7    -2.5561279716
-3.5975355928       1.5117
155069
C
  7.735338E-01   9.981671E-01   7.735798E-01    2     11514
-5.5000000000     289.1918534266    31   1   7    -5.6311359613
-0.0502358314       0.0768
146957
  5.907322E-02   6.045568E-02   3.388628E-02    1        28
-6.5000000000     336.0228260493     1   2   7     0.8177802191
3.9634621584      -3.0314
370501
A
2.764127E-02   3.230161E-02   1.633790E-02    1        51
-6.5000000000     319.7604886848     1   3   7     0.7583797888
3.5176580829      -1.87872
93439
  5.960780E-02   2.111333E-02   1.066835E-01    1        62
-6.5000000000     297.7363059936     1   1   7     2.2257828331
3.7887567121      -3.4478
600377


I am so troubled with extract the lines after A but not the lines
under C out, so the final result is

7.803481E-01   8.228973E-01   7.515242E-01    2      1833
-5.5000000000     308.3889771284     5   0   7     1.7084151661
1.6790503987       2.75458
53558
  7.866901E-01   8.410519E-01   9.981456E-01    2     14485
-5.5000000000     269.6201271260    39   4   7    -2.5561279716
-3.5975355928       1.5117
1550692.764127E-02   3.230161E-02   1.633790E-02    1        51
-6.5000000000     319.7604886848     1   3   7     0.7583797888
3.5176580829      -1.87872
93439
  5.960780E-02   2.111333E-02   1.066835E-01    1        62
-6.5000000000     297.7363059936     1   1   7     2.2257828331
3.7887567121      -3.4478
600377


Thanks for you suggestions,

What I have come up so far :

#!/usr/bin/env perl

use strict;
use warnings;

my $filename = "try.txt";

open my $fh, '<', $filename or die "Couldn't read $filename";



while (my $line =<$fh>){  
        if ($line =~ /^A$/){
                ## Here I don't know how to proceed further
                print $line;
        }
}

Hi Lina

The way I would do it is to keep a flag variable that is set to true/false depending on whether we're 'inside' an 'A' block. Check for lines that contain just a single letter, and set the variable to true if that letter is an 'A' and false otherwise. Every other line should just be printed if the flag is true.

The code below shows the idea.

HTH,

Rob


my $enabled;

while (my $line = <$fh>) {
  if ($line =~ /^([A-Z])$/) {
    $enabled = ($1 eq 'A');
  }
  elsif ($enabled) {
    print $line;
  }
}

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to