John W . Krahn schreef:
> Dr.Ruud:
>> Jonathan Lang:

>>>   while (<DATA>) {
>>>     ($a[0], $a[1], $a[2], $a[3], $a[4], $b) = /(\d+), (\d+), (\d+),
>>> (\d+), (\d+), Powerball: (\d+)/;
>>>     push @common, @a; push @powerball, $b;
>>>   }
>> 
>> A slightly different way to do that, is:
>> 
>>    while (<DATA>) {
>>      if (my @numbers =
>>            /(\d+), (\d+), (\d+), (\d+), (\d+), Powerball: (\d+)/) {
> 
> Another way to do that:
> 
>        /Powerball:/ and my @numbers = /\d+/g;
> 
> 
>>        push @common, @numbers[0..4];
>>        push @powerball, $numbers[5];
>>      }
>>      else {
>>        ...
>>      }
>>    }

I wouldn't use such a conditional "my".

So maybe you meant it more like:

    if ( /Powerball:/ ) {
        if ( (my @numbers = /\d+/g) >= 5 ) {
            push @common, @numbers[0..4];
            push @powerball, $numbers[5];
        }
        else {
            ....
        }
    }
    else {
        ...
    }


For example:

#!/usr/bin/perl
use strict;
use warnings;

{ local ($", $\) = (", ", "\n");

  my @common;
  my @powerball;

  while (<DATA>) {
      if ( /Powerball:/ ) {
          if ( (my @numbers = /\b\d+\b/g) > 5 ) {
              push @common, @numbers[0..4];
              push @powerball, $numbers[5];
          }
          else {
              print << "EOS";

*********
* ERROR * parsing input line $.
*********
EOS
          }
      }
      else {
          # do nothing
      }
  }

  print "common    : @common";
  print "powerball : @powerball";
}

__DATA__
abc 01 def 02 ghi 03 ijk 04 lmn 05 Powerbalx: 06 xyz
abc 11 def 12 ghi 13 ijk 14 lmn 15 Powerball: 16 xyz
abc 21 def 22 ghi 23 ijk 24 lmn 25 Powerball: X6 xyz
abc 31 def 32 ghi 33 ijk 34 lmn 35 Powerball: 36 xyz
test
abc 41 def 42 ghi 43 ijk 44 lmn 45 Powerball: 46.3 xyz

-- 
Affijn, Ruud

"Gewoon is een tijger."

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to